PAT——1074. 宇宙无敌加法器(20)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在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)相关推荐
- pat 1074. 宇宙无敌加法器(20)
1074. 宇宙无敌加法器(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 地球人习惯使用十进制数,并且默 ...
- PAT 1074. 宇宙无敌加法器(20)-PAT乙级真题
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个PAT星人都必须熟记各 ...
- C++学习之路 | PTA乙级—— 1074 宇宙无敌加法器 (20 分)(精简)
1074 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PA ...
- 【PAT乙级】1074 宇宙无敌加法器 (20 分)
题目地址 #include<cstdio> #include<iostream> #include<string> #include<vector> u ...
- 【简便解法】1074 宇宙无敌加法器 (20分)_40行代码AC
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都 ...
- 1074 宇宙无敌加法器 (20 分) c语言实现
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必 ...
- PAT 1074 宇宙无敌加法器
题目链接 正常的按位相加即可 在相加之前将字符串长度补齐,方便运算. long long int 好像存不下21位10进制数,所以要把每一位当字符串处理,不要试图用一个数去存储相加的结果. 结果为0的 ...
- PAT乙 1074. 宇宙无敌加法器
题目链接:PAT.1074宇宙无敌加速器 求解过程: 这里可以用4个数组来存储数据,一个保存N,一个保存添0后与N等长的输入1,一个保存添0后与N等长的输入2,另外一个保存结果.这里之所以要添0是为了 ...
- 宇宙无敌加法器 python
L1-3 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PA ...
最新文章
- jstat_使用jstat报告自定义JVM指标集
- HTML 5 meta 标签
- mex文件用matlab能打开吗,matlab中mex文件编译运行的问题
- mysql 子查询代替_MySQL查询优化:用子查询代替非主键连接查询
- Vue终端取消vue、prettier警告warn
- 用Winhex软件定位NTFS文件系统的不明白之处
- 计算机英语 mp3,计算机英语会话(MP3+中英字幕) 第21期:操作系统(5)
- Windows Server 2012 修复ms17-010漏洞提示 此更新不适用于你的计算机
- 一博商业进销存管理系统 v2008 怎么用
- h5画三角形_HTML5怎么画三角形?
- axure8.1 授权码
- 算法笔记(胡凡)刷题收获@Kaysen
- 投资百万运营站点 为何仅仅坚持了一年?
- Linux ftp服务器虚拟用户的建立
- linux下ad键盘驱动,led、键盘、ADC驱动程序
- 为什么说期货交易者依靠程序化交易系统接口才能获得成功
- 美国大学统计专业申请策略
- php __destruct反序列化原理
- oracle undoautotune,Oracle 隐藏参数:_undo_autotune
- VirtualBox问题——无法在父文件夹中创建虚拟文件夹
热门文章
- jquery layout学习
- 模型如何京东培训6万人
- hdu 5172 GTY's gay friends(线段树最值)
- 【转载】MySQL学习总结一
- 设计包含min函数的栈,O(1)空间实现方法
- 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法...
- Mr.J--树的遍历方式详解
- 寻找大富翁 (25 分)
- Linux技术学习要点,您掌握了吗---初学者必看
- 【poj3358】消因子+BSGS 或 消因子+欧拉定理 两种方法