Submission

Status:
----------

Score: 0

User: Monasm

Problemset: C.Sort Number

Language: c

Time: 0.035 second

Submitted On: 2024-10-19 02:43:02

#include <stdio.h>
#include <string.h>

int base(char num[], int n) {
    int ans = 0;
    int p = 1;
    for(int i=strlen(num)-1;i>=0;i--){
        char d = num[i];
        int v;
        if(d>='0'&&d<='9'){
            v = d-'0';
        }
        else{
            v = d-'A'+10; 
        } 
        ans+=v*p;
        p*=n;
    }
    return ans;
}
  
int main(){ 
    int t;scanf("%d",&t);
    long long int ans[t];
    for(int k=0;k<t;k++){
        int n;
        scanf("%d",&n);
        char num[1000];
        scanf("%s",num);
        int x = base(num,n);
        ans[k] = 0;
        for(int i=1;i*i<=x;i++){
            if(x%i==0){
                ans[k]+=i;
                if(x/i!=i){
                    ans[k]+=x/i;
                }
            }
        }
    }
    for(int i=0;i<t;i++){
        for(int j=0;j<t;j++){
            if(j+1<t&&ans[j]<ans[j+1]){
                long long int temp = ans[j];
                ans[j] = ans[j+1];
                ans[j+1] = temp;
            }
        }
    }
    for(int i=0;i<t;i++){
        printf("%lld\n",ans[i]);
    }
}