码迷,mamicode.com
首页 > 其他好文 > 详细

1022 D进制的A+B

时间:2020-05-01 15:10:04      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:items   技术   没有   layout   输入格式   line   -o   先进后出   cto   

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

标签:items   技术   没有   layout   输入格式   line   -o   先进后出   cto   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!