【PTA刷题整理】 PAT 乙级 1022 D进制的A+B

2020.03.14 N久没有写题了,每天都在写作业,害,今天写的差不多了才空出时间,还有一个钢琴弹唱的作业呢,火红红的萨日朗我的天,今天是圆周率日喔


1022 D进制的A+B (20分)

输入两个非负 10 进制整数 A 和 B (≤2​30​​−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系统(在线判定),则忽略文件读入,否则使用文件作为标准输入
#else
    freopen("1.txt", "r", stdin);   //从1.txt输入数据
#endif
	long 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;                       
}

发布了22 篇原创文章 · 获赞 2 · 访问量 492

猜你喜欢

转载自blog.csdn.net/weixin_43849089/article/details/104865275