题目描述
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数
思路:
计算一个数num中有多少个D(num/D),同时求num对D的余数,这个余数保存到结果中
将上次的num/D作为下一次循环的num,然后再求num/D和num%D
直到num/D小于D,再把最后这位数加入到结果中
比如1103(10进制)转到8进制
- num=1103,D=8
- num/D = 72 , num%D = 3(保存此项), num = 72
- num/D = 9 , num%D = 0(保存), num = 9
- num/D = 1 , num%D = 1(保存), num = 1
- num = 1 < D = 8 , 退出循环 ,将当前的num = 1保存到结果中
- 反向打印结果即为所求: 1103
#include<iostream>
using namespace std;
int main()
{
int num1,num2,format=0;
cin>>num1;
cin>>num2;
cin>>format;
string result="";
int num = num1 + num2;
int times = num;//每次除以D后的商,也是下一次的num
int left;//余数
do
{
num = times;
times = num / format;
left = num % format;
result += char(left+48);//保存结果为char型,便于打印
}while(times >= format);
if(times != 0)
result += char(times+48);
int len = result.length();
for(int i=len-1;i>=0;--i)//反向打印结果,即为正确顺序
cout<<result[i];
return 0;
}