Submission

Status:

PPPPPPP-P

Subtask/Task Score:

96/100

Score: 96

User: wasupum

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2025-10-03 14:06:18

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char ref[] = "0123456789ABCDEF";

int todec(char num[],int base){
    int dec = 0;
    size_t size = strlen(num)-1;
    for(int i = 0 ; i <= size ; i++){
        for(int j = 0 ; j < strlen(ref) ; j++){
            if(num[i] == ref[j]){
                dec += j * pow(base,size-i);
                break;
            }
        }
    }
    return dec;
}

void tobase(int dec,int base,char* buffer){
    char num[100];
    
    int i = 0;
    while(dec){
        int n = dec % base;
        if(n < 10)
            num[i++] = n + '0';
        else
            num[i++] = n + 'A' - 10;
        dec /= base;
    }
    num[i] = '\0';
    
    for(int j = 0 ; j < i ; j++){
        buffer[j] = num[i-j-1];
    }
    buffer[i] = '\0';
}

int main(void){
    int base ;
    char num1[100],num2[100];
    scanf("%d %s %s",&base,num1,num2);
    int dec1 = todec(num1,base);
    int dec2 = todec(num2,base);
    int sum = dec1 + dec2;
    char res[100];
    tobase(sum,base,res);
    printf("%s\n",res);
    
    return 0;
}