1022. D进制的A+B (20)
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:123 456 8输出样例:
1103
答案:
#include"stdafx.h"//这行PAT的编译器是不能识别的,但是VS2017是必要的
#include<stdio.h>
#include<stdlib.h>
int main()
{
int first;
int second;
int third;
int d;
scanf("%d%d%d", &first, &second, &d);
third = first + second;
int a[30];
int number = 0;
while (third>=0)
{
if (third == 0&&number==0)
{
a[number] = third;
number++;
break;
}
if (third == 0 && number > 0)
{
break;
}
a[number] = third %d;
third = third / d;
number++;
}
while (number>0)
{
number--;
printf("%d", a[number]);
}
system("PAUSE");
return 0;
}
下面的简洁的代码:
#include<iostream>
using namespace std;
void test(int m,int k){
if(m/k==0)cout<<m;
else{
test(m/k,k);
cout<<m%k;}
}
int main(){
int A,B,D;
cin>>A>>B>>D;
int cnt=0;
cnt=A+B;
test(cnt,D);
system("pause");
return 0;
}