输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
思路:
将a和b加在一起,然后找到d进制的最高位可以到多少位。输出即可。值得注意的是当a+b为0时,需要直接输出0。
另外,2的30次方可以用int型(我还是保守的用了long long int)。
int可以到2的32次方,long long int 可以到2的64次方。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
long long int a,b,m=1;
int d;
scanf("%lld%lld%d",&a,&b,&d);
a = a + b;
if(a==0) printf("0");
while(a>=m){
m=m*d;
}
m = m/d;
while(m!=0){
printf("%d",a/m);
a = a % m;
m = m / d;
}
return 0;
}
感受:
这个题还可以(虽然仍然没有一次AC),一次AC是我的终身追求。