输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 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了