Submission
Status:
PPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: qwerty_qaz
Problemset: บวกเลขฐาน
Language: c
Time: 0.001 second
Submitted On: 2025-10-11 18:25:39
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int poww(int num, int up){
int sum = 1;
if(up ==0) return 1;
for(int i = 0; i< up; i++){
sum *= num;
} return sum;
}
int turn2base10(int base, char num[], int size){
int sum =0;
for(int i = size -1; i >=0; i--){
if(isalpha(num[i])){
sum += (num[i] - 'A' +10) * poww(base, size -(i+1));
}else{
sum += (num[i] - '0') * poww(base, size -(i+1));
}
} return sum;
}
void print_base_n(int base, int num){
char map[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B','C','D','E','F'};
int keep[32];
int i =0;
if(num ==0){
printf("0");
}else{
while (num != 0)
{
keep[i] = num % base;
num /= base;
i++;
}
for(int j = i-1; j>=0; j--){
printf("%c", map[keep[j]]);
}}
}
int main() {
int base;
char num1[20], num2[20];
scanf("%d", &base);
scanf("%s%s", num1, num2);
int num = turn2base10(base, num1, strlen(num1)) + turn2base10(base, num2, strlen(num2));
print_base_n(base, num);
return 0;
}