1022 D进制的A+B (20)(20 分)
输入两个非负10进制整数A和B(≤2^30 −1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
分析:进制转化,同样是把纸上的工作转移到程序中,手写一个转二进制熟悉一下过程即可。
有一个小点 2^(30-1) 用int就行 int的范围是正负2的31次方-1 大概就是20亿。
#include <algorithm>
#include<iostream>
#include <queue>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
int a,b,d;
scanf("%d%d%d",&a,&b,&d);
int sum=a+b;
int t[1000]={0}; //转进制需要倒着写回来
int index=0;
while(sum>=d){
t[index++]=sum%d;
sum=sum/d;
}
t[index]=sum;
for(int i=index;i>=0;i--){
printf("%d",t[i]);
}
return 0;
}