/*
* (可回顾 1048. 数字加密;都涉及使数字位数一致)
* 1. 不同位数的PAT数之间如何方便相加 —— 构造相同大小的字符数组,按位数存储对应的数字
* 2. 相加时转为数字进行运算
* 3. 结果为0,为特殊情况,单独写输出代码
*/#include<stdio.h>#include<string.h>intmain(){char table[21], num1[21], num2[21], sum[22]={0};scanf("%s %s %s", table, num1, num2);//读取进制表 和 两个PAT数 int base, a, b;int len =strlen(table), len1 =strlen(num1), len2 =strlen(num2);for(int i = len -1; i >=0; i--){// 是否还在读取num1内容 ,是的话 将对应位的值 给 a;否则将0赋给a ,同理b
a =(len - i)<= len1 ? num1[len1 -(len - i)]-'0':0;
b =(len - i)<= len2 ? num2[len2 -(len - i)]-'0':0;
base = table[i]=='0'?10: table[i]-'0';//获取进制表对应位的进制
sum[i+1]+= a + b;if(sum[i+1]>= base){
sum[i]+=1;}
sum[i+1]%= base;
sum[i+1]+='0';}
sum[0]+='0';for(int i =0; i <22; i++){/* find the first non-zero bit */if(sum[i]!=0&& sum[i]!='0'){printf("%s\n", sum + i);return0;}}printf("0\n");/* If A + B = 0, then all bits are zero */return0;}