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);
}