https://www.luogu.com.cn/problem/P1604

题目背景
进制题目,而且还是个计算器~~

题目描述
话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。

输入格式
共3行第1行:一个十进制的整数,表示进制B。第2-3行:每行一个B进制数正整数。数字的每一位属于{0,1,2,3,4,5,6,7,8,9,A,B……},每个数字长度<=2000位。

输出格式
一个B进制数,表示输入的两个数的和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const int MAX=2000+10;
int n;
char a[MAX],b[MAX];
int c[MAX*2];
int main(){
freopen("in","r",stdin);
sf(n);
scanf("%s%s",a,b);
int last =0,t, l1=strlen(a),l2=strlen(b) ;
int i=l1-1,j=l2-1,cnt=0,t1,t2;
while(i>=0 && j>=0){
if(a[i]>='A') t1= a[i]-'A'+10;
else t1=a[i] - '0';
if(b[j]>='A') t2= b[j]-'A'+10;
else t2=b[j] - '0';
t = t1 + t2 + last;
c[cnt++]=t % n;
last = t / n;
i--;j--;
}
while(i>=0){
if(a[i]>='A') t1= a[i]-'A'+10;
else t1=a[i] - '0';
t = t1 + last;
c[cnt++] = t % n;
last = t / n;
i--;
}
while(j>=0){
if(b[j]>='A') t2= b[j]-'A'+10;
else t2= b[j] - '0';
t = t2 + last;
c[cnt++] = t % n;
last = t / n;
j--;
}
if(last!=0) c[cnt++] = last;
for(int j=cnt-1;j>=0;j--){
if(c[j]>=10){
printf("%c",'A' + c[j] - 10);
}else pf(c[j]);
}
return 0;
}