题目:
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
注意点:
A,B和A+B的范围都没有超过int型的范围,但如果转变为2进制最多要32位,超过了int型和long long型,只能单个位数存放数字或者用字符串表示。
AC代码:
(解法1:单个位数存放数字)
#include<iostream>
using namespace std;
const int maxn=1010;
int main(){
int a,b;
int c;
cin>>a>>b>>c;
int num=a+b;
int g[maxn]={0};
int i=0;
do{
g[i++]=num%c;
num/=c;
}while(num>0);
for(i=i-1;i>=0;i--){//倒序输出
cout<<g[i];
}
return 0;
}
AC代码:
(解法2:字符串表示)
#include<iostream>
using namespace std;
int main(){
int a,b,index,i=0;
cin>>a>>b>>index;
int c=a+b;
string ans;
do{
ans=(char)(c%index+'0')+ans;//字符串拼接
c/=index;
}while(c>0);
ans+="\0";//字符串结束符
cout<<ans<<endl;
return 0;
}