AC代码
#include<stdio.h>
#include<string.h>
int main(){
char jinzhi[21],s1[21],s2[21];//字符串比较好处理
int res[21]={0};//结果用int保存
gets(jinzhi);
gets(s1);
gets(s2);
while(strlen(s1)!=strlen(s2)){//位数对齐,不齐补零
if(strlen(s1)>strlen(s2)){
char ling[21]="0";
strcpy(s2,strcat(ling,s2));
}
else{
char ling[21]="0";
strcpy(s1,strcat(ling,s1));
}
}
int i=strlen(s1)-1,j=strlen(jinzhi)-1,cnt=0,c=0;//i是pat数的指针,j是进制表的指针,c是进位
while(i>=0&&j>=0){
if(jinzhi[j]!='0'){//进制表是0时单独处理
res[cnt++]=(s1[i]-'0'+s2[i]-'0'+c)%(jinzhi[j]-'0');
c=(s1[i]-'0'+s2[i]-'0'+c)/(jinzhi[j]-'0');
}
else{
res[cnt++]=(s1[i]-'0'+s2[i]-'0'+c)%10;
c=(s1[i]-'0'+s2[i]-'0'+c)/10;
}
i--;
j--;
}
if(c!=0)res[cnt++]=c;//最后一个进位
cnt--;
while(res[cnt]==0&&cnt>=0)cnt--;//高位的0不输出,注意结果为0的情况
if(cnt<0)printf("0");//测试点5:结果为0时的输出
else{
for(cnt;cnt>=0;cnt--)printf("%d",res[cnt]);//下标从大到小输出
}
return 0;
}