【PAT B1022】D进制的A+B
求指教, 不用数组,这个怎么改?
本题链接:
【PAT B1022】D进制的A+B
题目描述
输入两个非负 10 进制整数 A 和 B (≤2^30 −1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
代码参考
#include<cstdio>
#include<cmath>
int main() {
int a, b, d;
scanf("%d %d %d", &a, &b, &d);
int c = a + b,i=0; //非负a,b 2^30-1 + 2^30-1 = 2^31-2 int [-2^31-1 2^31-1]
long long sum = 0; //以十进制表示D进制,int类型范围不够
while(c){
sum += (c % d)*pow(10, i++); //除基取模乘10的i次方累加
c /= d;
}
printf("%lld", sum);
return 0;
}
运行结果