題目描述
輸入兩個非負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;
}