Submission
Status:
----------
Score: 0
User: mydKN
Problemset: C.Sort Number
Language: c
Time: 0.035 second
Submitted On: 2024-10-15 07:55:52
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int toten(char str[], int base){
int sum = 0;
int len = strlen(str);
int power = 1;
for(int i=len-1;i>=0;--i){
if(str[i] >= 'A' && str[i] <= 'Z') sum += (str[i] - 55) * power;
else sum += (str[i] - '0') * power;
power *= base;
}
return sum;
}
int solve(int n){
int factor = 0;
for(int i=1; i*i <= n; ++i){
if(n % i == 0) {
factor += i;
if(n / i != i) factor += n/i;
}
}
return factor;
}
int comp(const void *a, const void *b){
return *(int*)b - *(int*)a;
}
int main(){
int n;
scanf("%d", &n);
int arr[n];
int cnt = 0;
for(int i=0;i<n;++i){
int from;
scanf("%d", &from);
int num;
if(from != 10){
char str[1000];
scanf("%s", str);
num = toten(str, from);
}
else{
scanf("%d", &num);
}
arr[cnt++] = solve(num);
}
qsort(arr, n, sizeof(int), comp);
for(int i=0;i<n;++i){
printf("%d\n", arr[i]);
}
}