Submission

Status:
PPPPPPPPP

Score: 100

User: mydKN

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2024-10-14 21:41:51

#include<stdio.h>

int len(char str[]){
    int i;
    for(i=0;str[i]!='\0';++i);
    return i;
}

int max(int a, int b){
    if(a > b) return a;
    return b;
}

int base;
char num1[1000], num2[1000];
int n1[1000], n2[1000];
int res[1000];

int main(){
    scanf("%d", &base);
    scanf("%s %s", num1, num2);
    int cnt = 0;
    int len1 = len(num1);
    int len2 = len(num2);
    for(int i=len1-1;i>=0;--i){
        if(num1[i] <= 'Z' && num1[i] >= 'A') n1[cnt++] = num1[i]-55;
        else n1[cnt++] = num1[i]-'0';
    }
    cnt = 0;
    for(int i=len2-1;i>=0;--i){
        if(num2[i] <= 'Z' && num2[i] >= 'A') n2[cnt++] = num2[i]-55;
        else n2[cnt++] = num2[i]-'0';
    }
    // for(int i=0;i<cnt;++i) printf("%d ", n1[i]);
    // printf("\n");
    // for(int i=0;i<cnt;++i) printf("%d ", n2[i]);
    int mx = max(len1, len2);
    cnt = 0;
    for(int i=0;i<mx;++i){
        res[cnt] += (n1[i] + n2[i]);
        if(res[cnt] >= base){
            int x = res[cnt]/base;
            res[cnt]-=(base*x);
            res[cnt+1] += x;
            if(i == mx-1) cnt++;
        }
        cnt++;
    }
    for(int i=cnt-1;i>=0;--i){
        if(res[i] >= 10) printf("%c", res[i]+55);
        else printf("%d", res[i]);
    }
}

/*
16
12A
321
44B

5
24
32
61
*/