输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:123 456 8输出样例:
1103
//
// main.cpp
// PAT
//
// Created by Grover Chen on 10/4/14.
// Copyright (c) 2014 Grover Chen. All rights reserved.
//
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <math.h>
#include <string>
using namespace std;
int length;
char resed[30];
int main()
{
int i;
long long a,b,res;
int d;
int convert(long long res,int d);
cin>>a>>b>>d;
res=a+b;
if (res!=0) {
convert(res, d);
for (i=length-1; i>=0; i--) {
cout<<resed[i];
}
}
else
cout<<"0";
return 0;
}
int convert(long long res,int d)
{
int i=0;
while (res!=0) {
resed[i]=res%d+'0';
i+=1;
res/=d;
}
length=i;
return 0;
}
程序写的并不是特别规范,还有改进的空间。本题需要注意的是转换之后的进制数用long long都不足以存放,必须要使用字符数组来存放。此外还要添加程序对0进行处理的情况。