乙级 1022 D进制的A+B"/>
【PTA刷题整理】 PAT 乙级 1022 D进制的A+B
2020.03.14 N久没有写题了,每天都在写作业,害,今天写的差不多了才空出时间,还有一个钢琴弹唱的作业呢,火红红的萨日朗我的天,今天是圆周率日喔
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
也是一个很基础的作业题了,使用long long来存储A + B的和,注意的是使用do-while是为了防止A + B为0的情况
一般要用到反转的都使用字符串或者迭代器
#include<iostream> //输入输出流头文件
#include<stdio.h> //标准输入输出
#include<stdlib.h>
#include<math.h> //数学函数
#include<string.h> //C语言字符数组的字符串
#include<algorithm> //C++标准模板库的函数
#include<map> //map映射容器
#include<unordered_map> //无序的map映射容器
#include<vector> //变长数组容器
#include<queue> //队列
#include<stack> //栈
#include<string> //C++string类
#include<set> //set集合
#define SIZE 100000
using namespace std; //标准命名空间//可以加入全局变量或者其他函数int main(){ //主函数
#ifdef ONLINE_JUDGE //如果有oj系统(在线判定),则忽略文件读入,否则使用文件作为标准输入
#elsefreopen("1.txt", "r", stdin); //从1.txt输入数据
#endiflong long A , B ;int D;cin >> A >> B >> D;long long sum = A + B;string ans = "";do{int temp = sum % D;if(temp >= 0 && temp <= 9){ans += temp + '0'; }else{ans += temp - 10 + 'a';}sum /= D;}while(sum != 0);reverse(ans.begin() , ans.end());cout << ans << endl;return 0;
}
更多推荐
【PTA刷题整理】 PAT 乙级 1022 D进制的A+B
发布评论