首页 > 其他 > 详细

1022 D进制的A+B

时间:2020-05-01 15:20:13      阅读:54      评论:0      收藏:0      [点我收藏+]
1022 D进制的A+B (20分)
 

输入两个非负 10 进制整数 A 和 B (2?30??1),输出 A+B 的 D (1<D10)进制数。

输入格式:

输入在一行中依次给出 3 个整数 A、B 和 D。

输出格式:

输出 A+B 的 D 进制数。

输入样例:

123 456 8
 

输出样例:

1103

 

    这道题最好用STL中的<stack>,利用栈的先进后出的特性,我刚开始用的<vector>,但是有两个测试点段错误,然后改用<stack>,提交后就只有一个测试点答案错误,
然后调试的时候发现当输入的前两个数都是0的时候,什么都没输出,原因是因为0加0还是0,0对任何数取余还是0,所以就没有东西进栈,栈是空的,所以要做个特殊处理。

 1 #include<iostream>
 2 #include<stack>
 3 using namespace std;
 4 int main()
 5 {
 6     int A,B,D;
 7     int result;
 8     stack<int> v;
 9     cin>>A>>B>>D;
10     if(A==0&&B==0)
11     {
12         cout<<0;
13         return 0;
14     }
15     result=A+B;
16     while(result) //商不为0,余数
17     {
18         v.push(result%D); //余数入栈
19         result/=D;
20     }
21     while(!v.empty()) //空栈返回1,非空栈返回0
22     {
23         cout<<v.top();
24         v.pop();
25     }
26     return 0;
27 }

ac了

技术分享图片

 

1022 D进制的A+B

原文:https://www.cnblogs.com/buanxu/p/12813322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!