PAT :计算机程序设计能力考试:一个高校编程学习赛,内容基础,据说题目描述含糊不清,造成诸多理解错误。
第一观感是:输入输出样例极少,未给学生充分理解题目,提供更多辅助。
PAT 乙级:只涉及基础编程,最难到排序算法。适合基础语法学习阶段的同学。
问题描述
输入两个非负 10 进制整数 A A A 和 B ( ≤ 2 30 − 1 ) B (≤2^{30}−1) B(≤230−1),输出 A + B A+B A+B 的 D ( 1 < D ≤ 10 ) D (1<D≤10) D(1<D≤10) 进制数。
输入格式
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式
输出 A + B A+B A+B 的 D D D 进制数。
输入输出样例
输入样例1
123 456 8
输出样例1
1103
样例解释:无。
题解 1
思路分析:a + b == 0
需要注意,其余平安度过。
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int a, b, d;
cin >> a >> b >> d;
int s = a + b;
// a = b = 0,任何进制下,0 始终是 0
if(s == 0) {
cout << 0 << endl;
return 0;
}
char ansD[30];
int k = 0;
while(s) {
ansD[k++] = s % d + '0';
s /= d;
}
while( --k) cout << ansD[k];
cout << ansD[0] << endl;
return 0;
}