D进制的A+B (20分)
总结:
- 除基(转换成的进制)取余,结果存放数组,输入顺序为低位→高位。
- 存放数组范围:A、B范围→A+B<2^31, 进制最小为2,最多31位。
- 特殊情况:A+B=0。①直接输出0。 ②do...while...循环,先进行一次运算。
代码:
#include <cstdio>
int main(){
int a,b,d;
scanf("%d %d %d", &a, &b, &d);
int r[31]; //至少31位 sum小于2^31
int sum = a+b,count=0;
//do while或者if判断特殊情况0
/*
if(sum==0) {
printf("0");
return 0;
}
*/
do{
r[count++] = sum%d ;
sum /= d;
}while(sum);
for(int i=count-1; i>=0; i--)
printf("%d", r[i]);
return 0;
}