Submission

Status:
---PPPP-P

Score: 60

User: akuyga1

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2024-10-10 13:01:40

#include <stdio.h>
#include <string.h>
#include <math.h>
int convert(char x[],int len,int base){
    int y=0;
    for(int i=0;i<len;i++){
        if(x[len-1-i]>='0'&&x[len-1-i]<='9')y+=(x[len-1-i]-'0')*pow(base,i);
        else y+=(x[len-1-i]-'A'+10)*pow(base,i);}
        return y;
}
char change(int x){
    if(x>=0&&x<=9)return '0'+x;
    else return x-10+'A';
}

void back(int x,int base,char y[]){
    char* p;
    p=y;
    int i=0,len;
    while(1){if(x<pow(base,i)){len=(i-1);break;}i++;}
    //printf("%d",len);
    //printf("%d\n",x);
    for(int j=len;j>=0;j--){
        for(int k=0;k<base;k++)if(k*pow(base,j)>x){
            x=x%(int)pow(base,j);
            *p=change(k-1);
            //printf("%d\n",x);
            break;
        }p++;}
}
int main() {
	int base;
	char m[99],n[99];
	scanf("%d %s %s",&base,m,n);
	int x,y;
	x=convert(m,strlen(m),base);
	y=convert(n,strlen(n),base);
	//printf("%d",x+y);
	char z[99];
	//printf("%d\n",x+y);
	back(x+y,base,z);
	printf("%s",z);
}