输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
鸣谢用户谢浩然补充数据!
代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB
解题思路:这道题考的是十进制数如何转换成其他D进制数,方法是把该十进制数除D取余再逆序输出余数。
题中给的案例
A:123 B:456 A+B=579 要求转换为8进制数
①579%8=3 579/8=72 取余数3
②72%8=0 72/8=9 取余数0
③9%8=1 9/8=1 取余数1
④1%8=1 1/8=0 取余数1
最后逆序输出余数即1103
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
long long A,B;
int D;
cin>>A>>B>>D;
long long number = A+B;
long long num[1000]; //存储余数
int k =0;
if(number==0) //如果A+B为0,输出0
cout<<"0";
else{
while(number!=0) //除D取余
{
long long x = number%D;
num[k++] = x;
number = number/D;
}
for(int i=k-1;i>=0;i--) //逆序输出余数
{
cout<<num[i];
}
}
}