[PAT B1022 D进制的A+B]
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
CODE
#include<cstdio>
int res[32]={0};
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int sum=a+b,i=0;
do{
res[i]=sum%c;
sum=sum/c;
i++;
}while(sum!=0);
for(int j=i-1;j>=0;j--)
printf("%d",res[j]);
return 0;
}
注意:
1)输出是从i-1到0的输出,后来得到的余数在高位(左边,想象每得到一个余数就放进栈,最后在一起弹出,先弹出的在左边)
2)用do while避免sum为0时直接跳出循环
3)申请较大的空间(非堆空间),在10的6次方以内,建议定义为全局变量,静态存储区比程序栈空间大得多
4)在2的31次方即10的9次方,都可以用int