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
package com.hone.basical; import java.util.Scanner;
import java.util.Stack;
/**
* 原题目:https://www.patest.cn/contests/pat-b-practise/1069
* @author Xia
* 因为数据比较长,所以建议用字符串来处理,先补齐字符串,然后将数字字符串一个个转化为int来处理。
* 最后用stack来保存数据 有两个测试点没有过!!!
*/ public class basicalLevel1074addMachine { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String N = in.nextLine();
//用数组表示进制,左边的表示高进制,右边的表示低进制
int[] jz = new int[20];
for (int i = N.length()-1,j = 0; i >= 0; i--,j++) {
jz[j] = Integer.parseInt(N.substring(i, i+1));
}
String a = in.nextLine();
String b = in.nextLine();
int sum = 0;
//这里面采用堆栈来保存最终的结果,因为最后的结果是到这输出的。
Stack<Integer> sum2 = new Stack<>(); //进制相加的时候可以在前面补齐,使两者长度一致
if (a.length()>b.length()) {
for (int i = 0; a.length()>b.length(); i++) {
b="0"+b;
}
}else {
for (int i = 0; i < b.length()-a.length(); i++) {
a="0"+a;
}
}
int jw = 0; //表示进位
int k = 0;
for (int i = 0; i < a.length(); i++) {
int x = Integer.parseInt(a.substring(a.length()-1-i, a.length()-i));
int y = Integer.parseInt(b.substring(b.length()-1-i, b.length()-i));
int m = x+y+jw;
if ((jz[i] == 0||jz[i]>20)) {
if (m >= 10) {
jw = 1;
k = m - 10;
sum2.add(k);
}else {
jw = 0;
sum2.add(m);
}
}else if((jz[i]>1&&jz[i]<=20)){
if (m >= jz[i]) {
jw = 1;
k = m - jz[i];
sum2.add(k);
}
else {
jw = 0;
sum2.add(m);
}
}
}
/*while (!sum2.isEmpty()) {
System.out.print(sum2.pop());
}*/
String numS = "";
while (!sum2.isEmpty()) {
numS = numS+sum2.pop();
}
System.out.println(Long.parseLong(numS));
}
}
PAT——1074. 宇宙无敌加法器(20)的更多相关文章
- pat 1074. 宇宙无敌加法器(20)
1074. 宇宙无敌加法器(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 地球人习惯使用十进制数,并且默 ...
- PAT 1074 宇宙无敌加法器(20)(代码+思路+测试点分析)
1074 宇宙无敌加法器(20 分)提问 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"P ...
- PAT 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...
- PAT Basic 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...
- PAT 1074 宇宙无敌加法器
https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808 地球人习惯使用十进制数,并且默认一个数字的每 ...
- 1074 宇宙无敌加法器 (20分)C语言
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必 ...
- PAT(B) 1074 宇宙无敌加法器(Java)
题目链接:1074 宇宙无敌加法器 (20 point(s)) 题目描述 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的, ...
- PAT 乙级 1074 宇宙无敌加法器 (20 分)
1074 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每 ...
- P1074 宇宙无敌加法器
P1074 宇宙无敌加法器 转跳点:
随机推荐
- Java基础小结
JavaSE基础 本文为作者在学习和笔试题中遇到的小知识点总结,做以总结和备用. jdk的安装和配置环境变量 (1)以win10为例,右键此电脑,选择属性,进去系统设置,选择高级系统设置,进入环境变量 ...
- UVA1185 Big Number
题目大意:求十进制下x!的位数 这题其实就是要求\(\lg\)函数值的前缀和啊 对于一个数x,若\(\lg x=y\),则其位数为\(\lfloor y+1 \rfloor\) 然后对于对数,我们有\ ...
- laravel之引入验证码类
1.将验证码类文件夹放入到指定的位置,放入位置可以自定义 2.在控制器中引入验证码文件 3.在验证码文件中可以根据自己的需要,对验证码的内容进行编辑(包括背景,画线,边框,内容) 4.在入口文件中开启 ...
- JavaScript的进阶之路(四)理解对象1
对象是JavaScript的基本数据类型.简单的名值对组成了对象,BUT:还可以从一个被称为原型的对象继承属性,对象的方法通常就是继承的属性. 对象最常见的用法有:创建.设置.查找.删除.检测.枚举它 ...
- Exception in thread "main" java.lang.UnsatisfiedLinkError: no awt in java.library.path:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no awt in java.library.path: 这是 ...
- 【QT】在子窗体中控制父窗体
[背景说明]我的主窗体的名字叫做MainWindow,其子窗口是一个叫subDialog的类.我现在想做的是在子窗口的函数中调用父窗口. 在父窗口中打开子窗口 //弹出对话框确定变换的参数 subDi ...
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.gaiay.business.helper.dao.LiveRegenrationRecordMapper.insert
原因分析: 字段名称.报名.类名 对应不上 ,比如colomn和property属性 反了.. 按以下步骤一一执行: 1:检查xml文件所在的package名称是否和interface对应的packa ...
- weixin设置菜单
https://jingyan.baidu.com/article/925f8cb8dfcf11c0dce05661.html
- SQL读取注册表值
最近写一个自动检查SQL Serve安全配置的检查脚本,需要查询注册表,下面是使用SQL查询注册表值的方法. ) ) ) ) --For Named instance --SET @Instance ...
- [翻译] ASCScreenBrightnessDetector
ASCScreenBrightnessDetector ASCScreenBrightnessDetector lets you easily detect screen brightness cha ...