Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: kimza

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2025-10-13 15:57:02

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

char checkchar(int n){
    if(n>=0&&n<=9){
        return n+'0';
    }
    else if(n==10){
        return 'A';
    }
    else if(n==11){
        return 'B';
    }
    else if(n==12){
        return 'C';
    }
    else if(n==13){
        return 'D';
    }
    else if(n==14){
        return 'E';
    }
    else if(n==15){
        return 'F';
    }
    return '?';
}

void convertbase(int sum,int base){
    char basenum[100];
    int count = 0;

    if(base == 0 || sum == 0){
        printf("0");
    }
    else{
        while(sum!=0){
            basenum[count] = checkchar(sum%base);
            sum/=base;
            count++;
        }

        for(int i=count-1;i>=0;i--){
            printf("%c",basenum[i]);
        }
    }
}

int main(){
    int base;
    scanf("%d",&base);
    char n1[100],n2[100];
    scanf("%s %s",n1,n2);

    //turn num1 & 2 into base 10 first (dec)
    // num1
    int num1[100];
    int count1 = 0;
    int sum1 = 0;


    for(int i=0;n1[i]!='\0';i++){
        if(n1[i]>='0'&&n1[i]<='9'){
            num1[i] = n1[i]-48;
        }
        else if(n1[i]>='A'&&n1[i]<='F'){
            num1[i] = n1[i]-55;
        }
        count1++;
    }
    for(int i=0;i<count1;i++){
        sum1+=num1[i]*power(base,count1-i-1);
    }

    int num2[100];
    int count2 = 0;
    int sum2 = 0;


    for(int i=0;n2[i]!='\0';i++){
        if(n2[i]>='0'&&n2[i]<='9'){
            num2[i] = n2[i]-48;
        }
        else if(n2[i]>='A'&&n2[i]<='F'){
            num2[i] = n2[i]-55;
        }
        count2++;
    }
    for(int i=0;i<count2;i++){
        sum2+=num2[i]*power(base,count2-i-1);
    }
    int sum = sum1+sum2;
    // convert back to base;
    convertbase(sum,base);

    return 0;   
}