地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在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
 1 package com.hone.basical;
 2
 3 import java.util.Scanner;
 4 import java.util.Stack;
 5 /**
 6  * 原题目:https://www.patest.cn/contests/pat-b-practise/1069
 7  * @author Xia
 8  * 因为数据比较长,所以建议用字符串来处理,先补齐字符串,然后将数字字符串一个个转化为int来处理。
 9  * 最后用stack来保存数据  有两个测试点没有过!!!
10  */
11
12 public class basicalLevel1074addMachine {
13
14     public static void main(String[] args) {
15         Scanner in = new Scanner(System.in);
16         String N = in.nextLine();
17         //用数组表示进制,左边的表示高进制,右边的表示低进制
18         int[] jz = new int[20];
19         for (int i = N.length()-1,j = 0; i >= 0; i--,j++) {
20             jz[j] = Integer.parseInt(N.substring(i, i+1));
21         }
22         String a = in.nextLine();
23         String b = in.nextLine();
24         int sum = 0;
25         //这里面采用堆栈来保存最终的结果,因为最后的结果是到这输出的。
26         Stack<Integer> sum2 = new Stack<>();
27
28         //进制相加的时候可以在前面补齐,使两者长度一致
29         if (a.length()>b.length()) {
30             for (int i = 0; a.length()>b.length(); i++) {
31                 b="0"+b;
32             }
33         }else {
34             for (int i = 0; i < b.length()-a.length(); i++) {
35                 a="0"+a;
36             }
37         }
38         int jw = 0;                //表示进位
39         int k = 0;
40         for (int i = 0; i < a.length(); i++) {
41             int x = Integer.parseInt(a.substring(a.length()-1-i, a.length()-i));
42             int y = Integer.parseInt(b.substring(b.length()-1-i, b.length()-i));
43             int m = x+y+jw;
44             if ((jz[i] == 0||jz[i]>20)) {
45                 if (m >= 10) {
46                     jw = 1;
47                     k = m - 10;
48                     sum2.add(k);
49                 }else {
50                     jw = 0;
51                     sum2.add(m);
52                 }
53             }else if((jz[i]>1&&jz[i]<=20)){
54                 if (m >= jz[i]) {
55                     jw = 1;
56                     k = m - jz[i];
57                     sum2.add(k);
58                 }
59                 else {
60                     jw = 0;
61                     sum2.add(m);
62                 }
63             }
64         }
65         /*while (!sum2.isEmpty()) {
66             System.out.print(sum2.pop());
67         }*/
68         String numS = "";
69         while (!sum2.isEmpty()) {
70             numS = numS+sum2.pop();
71         }
72         System.out.println(Long.parseLong(numS));
73     }
74 }


转载于:https://www.cnblogs.com/xiaxj/p/8006234.html

PAT——1074. 宇宙无敌加法器(20)相关推荐

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

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

  2. PAT 1074. 宇宙无敌加法器(20)-PAT乙级真题

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在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. 【简便解法】1074 宇宙无敌加法器 (20分)_40行代码AC

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

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

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

  7. PAT 1074 宇宙无敌加法器

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

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

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

  9. 宇宙无敌加法器 python

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

最新文章

  1. jstat_使用jstat报告自定义JVM指标集
  2. HTML 5 meta 标签
  3. mex文件用matlab能打开吗,matlab中mex文件编译运行的问题
  4. mysql 子查询代替_MySQL查询优化:用子查询代替非主键连接查询
  5. Vue终端取消vue、prettier警告warn
  6. 用Winhex软件定位NTFS文件系统的不明白之处
  7. 计算机英语 mp3,计算机英语会话(MP3+中英字幕) 第21期:操作系统(5)
  8. Windows Server 2012 修复ms17-010漏洞提示 此更新不适用于你的计算机
  9. 一博商业进销存管理系统 v2008 怎么用
  10. h5画三角形_HTML5怎么画三角形?
  11. axure8.1 授权码
  12. 算法笔记(胡凡)刷题收获@Kaysen
  13. 投资百万运营站点 为何仅仅坚持了一年?
  14. Linux ftp服务器虚拟用户的建立
  15. linux下ad键盘驱动,led、键盘、ADC驱动程序
  16. 为什么说期货交易者依靠程序化交易系统接口才能获得成功
  17. 美国大学统计专业申请策略
  18. php __destruct反序列化原理
  19. oracle undoautotune,Oracle 隐藏参数:_undo_autotune
  20. VirtualBox问题——无法在父文件夹中创建虚拟文件夹

热门文章

  1. jquery layout学习
  2. 模型如何京东培训6万人
  3. hdu 5172 GTY's gay friends(线段树最值)
  4. 【转载】MySQL学习总结一
  5. 设计包含min函数的栈,O(1)空间实现方法
  6. 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法...
  7. Mr.J--树的遍历方式详解
  8. 寻找大富翁 (25 分)
  9. Linux技术学习要点,您掌握了吗---初学者必看
  10. 【poj3358】消因子+BSGS 或 消因子+欧拉定理 两种方法