PAT-进制转换-B1022 D进制的A+B (20分)
方知有 人气:0题目描述:
输入两个非负10进制整数A和B(≤230-1),输出A+B的D(1<D≤10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
样例:
输入:123 456 8
输出:1103
思路:
先计算A+B的值,然后再将其转换为D进制。可使用“除基取余法”。
注意点:
- A+B的范围在int范围内
- 最好使用do···while语句。使用while语句要特判A+B等于0的情况
- 存储A+B%D的数组要从高位到低位进行输出
代码:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a, b, z;//题目数据正好在int范围内 7 int datas[40] = { 0 };//存储D进制的每一位数 8 int d, num = 0; 9 10 scanf("%lld %lld %d", &a, &b, &d); 11 12 z = a + b; 13 14 //进行进制转换 15 do 16 { 17 datas[num++] = z % d; 18 z /= d; 19 } while (z != 0); 20 21 //对D进制数进行输出,从高位到低位 22 for (int i = num - 1;i >= 0;i--) 23 { 24 printf("%d", datas[i]); 25 } 26 27 return 0; 28 }
参考书籍-《算法笔记》-胡凡
加载全部内容