PAT乙级1022. D进制的A+B (20)
2017-03-01 20:02
363 查看
这道题目唯一的坑就是所谓的2的30次方,我天真的以为结果也用long long星就可以了
结果发现A不过,unsigned之,依旧不过
最后发现改成后面的进制后,数字如果还是以10进制保存会浪费很多空间,且会超过2的30(32)次方
果断以余数递归的方法(注意输出语句的顺序),输出它,根据字符对应输出
#include <iostream>
using namespace std;
const char s[10] = {'0','1','2','3','4','5','6','7','8','9'};
void change (unsigned long long num ,int N) {
if (num) {
change(num/N,N); // 注意这两行的顺序
cout<<s[num%N];
}
}
int main(void) {
unsigned long long A {0}, B {0};
//求出A+B的和,并转换成D进制输出
int D {0};
cin>>A>>B>>D;
if (A+B)change(A+B,D);
else cout<<'0';
return 0;
}
原题地址:点击打开链接 点击打开链接 点击打开链接
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
输出样例:
结果发现A不过,unsigned之,依旧不过
最后发现改成后面的进制后,数字如果还是以10进制保存会浪费很多空间,且会超过2的30(32)次方
果断以余数递归的方法(注意输出语句的顺序),输出它,根据字符对应输出
#include <iostream>
using namespace std;
const char s[10] = {'0','1','2','3','4','5','6','7','8','9'};
void change (unsigned long long num ,int N) {
if (num) {
change(num/N,N); // 注意这两行的顺序
cout<<s[num%N];
}
}
int main(void) {
unsigned long long A {0}, B {0};
//求出A+B的和,并转换成D进制输出
int D {0};
cin>>A>>B>>D;
if (A+B)change(A+B,D);
else cout<<'0';
return 0;
}
原题地址:点击打开链接 点击打开链接 点击打开链接
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
相关文章推荐
- 【PAT】(乙级)1022. D进制的A+B (20)
- 1022. D进制的A+B (20) PAT乙级真题
- 1022. D进制的A+B (20) PAT乙级
- pat乙级1022. D进制的A+B (20)
- PAT 乙级 1022. D进制的A+B (20)
- 1022. D进制的A+B (20)-PAT乙级真题
- PAT乙级 1022. D进制的A+B (20)
- 乙级 PAT 1022. D进制的A+B (20)
- PAT 乙级 1022 D进制的A+B (20)
- PAT乙级1017. A除以B (20)&&1022. D进制的A+B (20)
- PAT乙级 1022. D进制的A+B (20) 进制转换
- 浙江大学PAT_乙级_1022. D进制的A+B (20)
- 1022. D进制的A+B (20)--PAT乙级
- PAT乙级 1022. D进制的A+B (20)
- PAT-乙级-1022. D进制的A+B (20)
- PAT乙级.1022. D进制的A+B (20)
- PAT乙级真题及训练集(16)--1022. D进制的A+B (20)
- pat 乙级 1022. D进制的A+B (20)
- PAT乙级—1022. D进制的A+B (20)-native
- PAT乙级1022. D进制的A + B(20)