Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: I_am_me

Problemset: บวกเลขฐาน

Language: c

Time: 0.003 second

Submitted On: 2025-10-12 11:47:50

#include <stdio.h>
#include <string.h>
long long poww(int n, int m) {
    long long power = 1;
    for(int i = 0;i<n;i++) power*=m ;
    return power;
}

long long n_to_ten(char num[],int a) {
    //?ŧ?繰ҹ 10

    //????ѡ
    int lena = strlen(num) ;
    long long nb10 = 0 ;

    //?ŧ
    for(int i = 0;i<lena;i++) {
        if(num[i]<=57 && num[i]>=48) nb10 += (num[i]-48)*poww(lena-i-1,a) ;
        else if (num[i]>=65 && num[i]<=90) nb10 += (num[i]-55)*poww(lena-i-1,a) ;
    }
    return nb10 ;
}

void ten_to_n(long long nb10, int x){
    //?ŧ?繰ҹ x
    if (nb10 == 0) {
        printf("0");
        return ;
    }

    //????ѡ
    int count = 0;
    long long nbtran = nb10 ;
    while(nbtran>0) {
        nbtran/=x ;
        count++ ;
    }

    char nbx[count] ;
    int i = 0;
    while (nb10>0) {
        if (nb10%x < 10) nbx[i] = nb10%x+'0' ;
        else if (nb10%x >= 10) nbx[i] = nb10%x+'A'-10 ;
        nb10=(nb10-nb10%x)/x ;
        i++ ;
    }
    for(int i = count-1;i>=0;i--) printf("%c",nbx[i]) ;
}

int main(){
    int a,x,ch ;
    char num[76], num1[76] ;
    scanf("%d %s %s",&a,num,num1) ;
    ten_to_n(n_to_ten(num,a)+n_to_ten(num1,a),a) ;
    return 0;
}