PAT-进制转换-B1022 D进制的A+B (20分)
题目描述:
输入两个非负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的数组要从高位到低位进行输出
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
参考书籍-《算法笔记》-胡凡
作者:方知有
Motto: 热爱可抵岁月漫长
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
所有评论和私信都会在第一时间处理,如有问题或建议,请多多赐教!
支持博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!