输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:123 456 8输出样例:
1103
这个题目,自己提交了三遍,一直没有AC,到最后,发现,原来是自己再结果为零 的时候没有判断,这样在输出vector的时候,会出现段错误。
显然是自己没有考虑周到。
代码如下
#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;
int main(void)
{
int A=0,B=0,D=0;
int res=0;
vector<int> v;
cin>>A>>B>>D;
res=A+B;
if(res==0)
{
cout<<res;
}
else
{
while(res)
{
v.push_back(res%D);
res=res/D;
}
/* for(vector<int>::iterator ip=v.end()-1;ip>=v.begin();)
{
cout<<*ip--;
}
*/
for(int i=v.size()-1; i>=0; i--)
{
cout<<v[i];
}
}
return 0;
}
在下面的这段话,可以方便的进行vector的操作,如下。
for(vector<int>::iterator ip=v.end()-1;ip>=v.begin();)
{
cout<<*ip--;
}