题目
输入两个非负 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*
有任何问题,欢迎评论区留言!
更多题解
pat 乙级 题解汇总(持续更新)(C++)