Submission

Status:
PPPPPPP-P

Score: 96

User: Nagorn

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.002 second

Submitted On: 2024-10-14 12:28:36

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

int power(int a, int n){
    if(!n) return 1;
    return a * power(a, n-1);
}

int bas(char a[], int b){
    int ans = 0;
    int idx = 0;
    for(int i = strlen(a) - 1; i >= 0; i--){
        int num;
        if(a[i] >= 'A') num = (a[i] - 'A') + 10;
        else num = a[i] - '0';
        ans += num * power(b, idx);
        idx++;
    }
    return ans;
}

int main(){
    int base;
    scanf("%d",&base);
    char a[101], b[101];
    scanf("%s %s",a,b);
    // printf("%d %d", strlen(a), strlen(b));
    int x,y;
    x = bas(a, base);
    y = bas(b, base);
    // printf("%d %d %d", x, y, x + y);
    int z = x + y;
    int ans[105];
    int idx = 0;
    while(z){
        int mod = z % base;
        // printf("%d ", mod);
        z /= base;
        ans[idx] = mod;
        idx++;
    }
    // printf("\n");
    for(int i = idx - 1; i >= 0; i--){
        if(ans[i] < 10) printf("%d", ans[i]);
        else printf("%c", (ans[i] - 10) + 'A');
    }
}