PAT乙级 1022 D进制的A+B
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
思路:
主要考的是数学,会用短除法做进制转换应该大致思路就没问题了,关联的知识高中有讲。
一共写了两次这个题,两种不同的思路。
第一种是借助string,设置空字符串str="\0"(注意:必须是"\0"不能是""这样的空字符串,不然会报错abort() has been called),若第一次的商==0(就是说,a+b的和还达不到该进制下需要进位的数值),则直接令str=to_string(a+b)输出str;否则依次使短除法的余数加上原字符串str,再输出string即可。
第二种是借助int数组存储余数。依然要区分商为0和不为0的情况,若不为0,则进入while循环,让数组的每一位都等于当前的余数,之后再令被除数/进制,两种方法大同小异。最后for循环倒序输出数组,这个方法的一个亮点是i的使用非常灵动!
可能的失分点:未考虑到商==0的情况。
第一种代码
#include<iostream>
#include<iomanip>
#include<vector>
#include<set>
#include<list>
#include<deque>
#include<stack>
#include<unordered_map>
#include<cctype>
#include<map>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int num[10];
int main()
{int a, b, d;cin >> a >> b >> d;int shang=(a+b)/d;int c = a + b;string str="\0";if (shang != 0){while (shang != 0){str = to_string(c % d) + str;c = shang;shang /= d;}str = to_string(c % d) + str;}elsestr = to_string(a+b);cout << str;return 0;
}
第二种代码:
#include <iostream>
using namespace std;int main()
{int a, b,d;cin >> a >> b>>d;int rem;int rems[50];int i = 0;int c = a + b;if (c == 0)cout << "0";while (c != 0)//不知道要循环多少次,用while循环{rems[i++] = (c % d);c /= d;}for (int j = i - 1; j >= 0; j--){cout << rems[j];}return 0;
}
PAT乙级 1022 D进制的A+B相关推荐
- pat 乙级 1022 D进制的A+B(C++)
题目 输入两个非负 10 进制整数 A 和 B (≤230 −1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: ...
- [PAT乙级]1022 D进制的A+B
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: 输出 ...
- PAT乙级(1022 D进制的A+B )
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: 输出 ...
- PAT 乙级 1022. D进制的A+B (20) Java版
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 输出格式: 输出A+B的D ...
- C++学习之路 | PTA乙级—— 1022 D进制的A+B (20分)(精简)
1022 D进制的A+B (20分) 输入两个非负 10 进制整数 A 和 B (≤2 30 −1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 ...
- PAT乙:1022 D进制的A+B
知识点: pow()函数:头文件cmath D进制每一位提取: bit = number %D;number /= D 结果表示出来要用十进制: result += bit * pow(10,coun ...
- PAT乙级篇之进制回文数
原题: 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发一 ...
- 1022. D进制的A+B (20)-PAT乙级真题
输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数. 输入格式 输入在一行中依次给出3个整数A.B和D. 输出格式 输出A+B的D进 ...
- PAT——1022. D进制的A+B
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 输出格式: 输出A+B的D ...
最新文章
- php 前端控制器,前端控制器模式
- 在VS2010下使用 UNICODE 和 ANSI 的混合编程
- list set map 各自实现类的区别以及它们的底层原理和实现(部分)
- 用jQuery实现简单的加入收藏页面的功能
- Linux赋予目录或文件任何人都可以读、写、执行的操作
- 人之间的尊重是相互的_人与人之间的感情,最基本的是相互尊重
- 通过css使文字有渐变的效果
- TIM网盘批量下载方法
- 安全赋能区域数字化转型,普陀区副区长徐树杰带队调研上海控安
- 《关键对话》读书笔记
- matlab 矩阵分解行满秩,matlab生成满秩矩阵
- sql 节假日判断(春节、中秋、国庆、周末等)
- 用Liveupdata 刷MSI主板Slic 2.1
- c# 获取照片的经纬度和时间
- LaTeX排版系统及与word的区别
- mosfet驱动电路设计--笔记
- PostgreSQL16中pg_dump的LZ4和ZSTD压缩
- 计算机视觉处理的三大任务(待续)
- 百度员工离职总结:如何做个好员工?
- DIY USB3.0 SM2246XT+双贴闪迪15131颗粒256G固态U盘