输入两个非负 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相关推荐

  1. pat 乙级 1022 D进制的A+B(C++)

    题目 输入两个非负 10 进制整数 A 和 B (≤2​30 −1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: ...

  2. [PAT乙级]1022 D进制的A+B

    输入两个非负 10 进制整数 A 和 B (≤2​30​​−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: 输出 ...

  3. PAT乙级(1022 D进制的A+B )

    输入两个非负 10 进制整数 A 和 B (≤2​30​​−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: 输出 ...

  4. 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 ...

  5. 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 ...

  6. PAT乙:1022 D进制的A+B

    知识点: pow()函数:头文件cmath D进制每一位提取: bit = number %D;number /= D 结果表示出来要用十进制: result += bit * pow(10,coun ...

  7. PAT乙级篇之进制回文数

    原题: 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数.例如32123就是一个回文数:17在某种意义上也是一个回文数,因为它的二进制型式--10001--是一个回文数. 请你帮忙开发一 ...

  8. 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进 ...

  9. PAT——1022. D进制的A+B

    输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 输出格式: 输出A+B的D ...

最新文章

  1. php 前端控制器,前端控制器模式
  2. 在VS2010下使用 UNICODE 和 ANSI 的混合编程
  3. list set map 各自实现类的区别以及它们的底层原理和实现(部分)
  4. 用jQuery实现简单的加入收藏页面的功能
  5. Linux赋予目录或文件任何人都可以读、写、执行的操作
  6. 人之间的尊重是相互的_人与人之间的感情,最基本的是相互尊重
  7. 通过css使文字有渐变的效果
  8. TIM网盘批量下载方法
  9. 安全赋能区域数字化转型,普陀区副区长徐树杰带队调研上海控安
  10. 《关键对话》读书笔记
  11. matlab 矩阵分解行满秩,matlab生成满秩矩阵
  12. sql 节假日判断(春节、中秋、国庆、周末等)
  13. 用Liveupdata 刷MSI主板Slic 2.1
  14. c# 获取照片的经纬度和时间
  15. LaTeX排版系统及与word的区别
  16. mosfet驱动电路设计--笔记
  17. PostgreSQL16中pg_dump的LZ4和ZSTD压缩
  18. 计算机视觉处理的三大任务(待续)
  19. 百度员工离职总结:如何做个好员工?
  20. DIY USB3.0 SM2246XT+双贴闪迪15131颗粒256G固态U盘

热门文章

  1. linux 目录sbit,linux中SUID,SGID与SBIT的奇妙用途详解
  2. java 加载资源_在Java中加载资源的首选方式
  3. python面向对象学习(七)单例
  4. CUDA并行计算 | CUDA算法效率提升关键点概述
  5. Hibernate入门这一篇就够了
  6. .net自带的IOC容器MEF使用
  7. 梦想还是要有的 万一实现了呢
  8. POJ 2847 Widget Factory
  9. eclipse 版本理解
  10. 英雄七十寿 无物下冷酒 横刀上闹市 直取数人头