题目
输入两个非负 10 进制整数 A 和 B (≤230 −1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
分析
- A+B<=2^31-2,故依然可用int类型来存储变量
- 进制转换,可使用除k取余法
- 注意A、B为0的情况。
- 除k取余法,结果是倒着数。
AC代码
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int A,B,C,D,r;
cin>>A>>B>>D;
string s="";
C=A+B;
if(C==0)
{
cout<<0;
}
while(C!=0)
{
r=C%D;
s=s+to_string(r);
C=C/D;
}
int len=s.length()+1;
char ch[len];
strcpy(ch, s.c_str());
int i;
for(i=len-2;i>=0;i--)
cout<<ch[i];
return 0;
}
用到的函数
to_string():将整数转为string
c_str():将string转为char*
strcpy():将字符串内容复制到字符串或者char*
有任何问题,欢迎评论区留言!