地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个PAT星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是7进制数、第2位是2进制数、第3位是5进制数、第4位是10进制数,等等。每一位的进制d或者是0(表示十进制)、或者是[2,9]区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT星人通常只需要记住前20位就够用了,以后各位默认为10进制。
在这样的数字系统中,即使是简单的加法运算也变得不简单。例如对应进制表“0527”,该如何计算“6203+415”呢?我们得首先计算最低位:3+5=8;因为最低位是7进制的,所以我们得到1和1个进位。第2位是:0+1+1(进位)=2;因为此位是2进制的,所以我们得到0和1个进位。第3位是:2+4+1(进位)=7;因为此位是5进制的,所以我们得到2和1个进位。第4位是:6+1(进位)=7;因为此位是10进制的,所以我们就得到7。最后我们得到:6203+415=7201。

输入格式:

输入首先在第一行给出一个N位的进制表(0 < N <=20),以回车结束。 随后两行,每行给出一个不超过N位的正的PAT数。

输出格式:

在一行中输出两个PAT数之和。

输入样例:

30527
06203
415

输出样例:

7201

分析:先将要相加的两个字符串S1和S2都扩展到和S等长,然后从后往前按照进制相加到ans中,注意进位carry,最后输出字符串ans,记得不要输出字符串ans前面的0。如果一次都没有输出,最后要输出一个0~

#include <iostream>
using namespace std;
int main() {string s, s1, s2, ans;int carry = 0, flag = 0;cin >> s >> s1 >> s2;ans = s;string ss1(s.length() - s1.length(), '0');s1 = ss1 + s1;string ss2(s.length() - s2.length(), '0');s2 = ss2 + s2;for(int i = s.length() - 1; i >= 0; i--) {int mod = s[i] == '0' ? 10 : (s[i] - '0');ans[i] = (s1[i] - '0' + s2[i] - '0' + carry) % mod + '0';carry = (s1[i] - '0' + s2[i] - '0' + carry) / mod;}if (carry != 0) ans = '1' + ans;for(int i = 0; i < ans.size(); i++) {if (ans[i] != '0' || flag == 1) {flag = 1;cout << ans[i];}}if (flag == 0) cout << 0;return 0;
}

PAT 1074. 宇宙无敌加法器(20)-PAT乙级真题相关推荐

  1. pat 1074. 宇宙无敌加法器(20)

    1074. 宇宙无敌加法器(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 地球人习惯使用十进制数,并且默 ...

  2. PAT——1074. 宇宙无敌加法器(20)

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个PAT星人都必须熟记各 ...

  3. C++学习之路 | PTA乙级—— 1074 宇宙无敌加法器 (20 分)(精简)

    1074 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PA ...

  4. 【PAT乙级】1074 宇宙无敌加法器 (20 分)

    题目地址 #include<cstdio> #include<iostream> #include<string> #include<vector> u ...

  5. PAT 1074 宇宙无敌加法器

    题目链接 正常的按位相加即可 在相加之前将字符串长度补齐,方便运算. long long int 好像存不下21位10进制数,所以要把每一位当字符串处理,不要试图用一个数去存储相加的结果. 结果为0的 ...

  6. 【简便解法】1074 宇宙无敌加法器 (20分)_40行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都 ...

  7. 1074 宇宙无敌加法器 (20 分) c语言实现

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必 ...

  8. PAT乙 1074. 宇宙无敌加法器

    题目链接:PAT.1074宇宙无敌加速器 求解过程: 这里可以用4个数组来存储数据,一个保存N,一个保存添0后与N等长的输入1,一个保存添0后与N等长的输入2,另外一个保存结果.这里之所以要添0是为了 ...

  9. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

最新文章

  1. 广东“基因编辑婴儿事件”调查组:将对贺建奎依法依规严肃处理
  2. 阿里AI再摘一冠,大幅提高视觉对话世界纪录
  3. 字符串拆分-Java
  4. VTK:PolyData之CenterOfMass
  5. linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
  6. web服务器原理(作业四)
  7. 一个产品留言统计查寻的分析比较
  8. POJ1275-Cashier Employment【差分约束系统】
  9. 深入学习jQuery选择器系列第六篇——过滤选择器之状态选择器
  10. mysql: you can't specify target table 问题解决
  11. STM8学习笔记---NTC热敏电阻的使用
  12. 定点乘法运算之原码一位乘法
  13. 基于Vivado和Ego1的密码锁设计
  14. 创业感悟:不忘初心,方得始终
  15. [收藏] 抽奖活动的高可用、高并发优化
  16. 文件上传,出现400 的错误问题
  17. 用vue写一个天气webAPP
  18. Python入门(二)之Python的集成开发环境(IDE)
  19. 2022-09-15 mysql列存储引擎-语法树转换
  20. java计算机毕业设计线上花店购物商城源码+lw文档+系统+数据库

热门文章

  1. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第5天
  2. Android线程与ANR
  3. 《『若水新闻』客户端开发教程》——06.设计新闻内容UI
  4. c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode...
  5. 源码编译搭建LAMP环境
  6. Linux 下安装配置 JDK7
  7. eoe·Android 开发门户 - android开发者的必备网站
  8. 基于Linux的集群系统(五) Linux集群系统的实现
  9. Telnet发邮件过程
  10. ASP.NET2.0中数据源控件之异步数据访问