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
写的代码很乱,很不在状态,说说测试点吧。
测试点3,4是数非常大的时候, 如果使用数字作为输入,这测试点3,4,过不了,所以只能使用字符串作为输入。
测试点5是有进位的情况,最后一个测试点是输出为0的情况。
import java.util.Arrays;
import java.util.Scanner; public class Test { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//将反转后的进制表存入数组a中。
String temp = sc.next();
StringBuilder temp1 = new StringBuilder(temp);
temp1 = temp1.reverse();
int[] a = new int[temp.length()];
for(int i=0;i<temp1.length();i++) {
a[i] = (temp1.charAt(i)-'0');
}
//将反转后的第一个数存入数组b中,注意去除多余的零
String temp2 = sc.next();
StringBuilder temp3 = new StringBuilder(temp2);
int i1 = 0;
for(i1=0;i1<temp2.length();i1++) {
if(temp3.charAt(i1)!='0')
break;
}
temp3.delete(0, i1);
temp3 = temp3.reverse();
int[] b = new int[temp3.length()];
for(int i=0;i<temp3.length();i++) {
b[i] = temp3.charAt(i)-'0';
}
//将反转后的第一个数存入数组c中,注意去除多余的零
String temp4 = sc.next();
StringBuilder temp5 = new StringBuilder(temp4);
for(i1=0;i1<temp4.length();i1++) {
if(temp5.charAt(i1)!='0')
break;
}
temp5.delete(0, i1);
temp5 = temp5.reverse();
int[] c = new int[temp5.length()];
for(int i=0;i<temp5.length();i++) {
c[i] = temp5.charAt(i)-'0';
}
//如果输入两个数为零,输出0;
if(temp5.length()==0&&temp3.length()==0) {
System.out.println(0);
System.exit(0);
}
StringBuilder sum = new StringBuilder();
int i = 0;
int flag = 0;//进制
while(i<b.length&&i<c.length) {
int k = 0;
k = b[i]+c[i]+flag;
int k1 = a[i];
if(a[i]==0)
k1 = 10;
if(k>=k1) {
k = k%k1;
flag = 1;
}else {
flag = 0;
}
sum.append(k+"");
i++;
}
while(i<b.length) {
int k = 0;
k = b[i]+flag;
int k1 = a[i];
if(a[i]==0)
k1 = 10;
if(k==k1) {
flag = 1;
sum.append(0+"");
}else {
flag = 0;
sum.append(k+"");
}
i++;
}
while(i<c.length) {
int k = 0;
k = c[i]+flag;
int k1 = a[i];
if(a[i]==0)
k1 = 10;
if(k==k1) {
flag = 1;
sum.append(0+"");
}else {
flag = 0;
sum.append(k+"");
}
i++;
}
if(flag==1) {
System.out.print(1);
}
System.out.println(sum.reverse().toString()); } }
PAT 1074 宇宙无敌加法器 (20 分)的更多相关文章
- pat 1074. 宇宙无敌加法器(20)
1074. 宇宙无敌加法器(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 地球人习惯使用十进制数,并且默 ...
- PAT Basic 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...
- PAT——1074. 宇宙无敌加法器(20)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个PAT星人都必须熟记各位数字的进制表,例如 ...
- 1074 宇宙无敌加法器 (20分)C语言
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"PAT数".每个 PAT 星人都必 ...
- PAT 1074 宇宙无敌加法器(20)(代码+思路+测试点分析)
1074 宇宙无敌加法器(20 分)提问 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"P ...
- PAT 1074 宇宙无敌加法器
https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808 地球人习惯使用十进制数,并且默认一个数字的每 ...
- PAT(B) 1074 宇宙无敌加法器(Java)
题目链接:1074 宇宙无敌加法器 (20 point(s)) 题目描述 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的, ...
- PAT 乙级 1074 宇宙无敌加法器 (20 分)
1074 宇宙无敌加法器 (20 分) 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每 ...
- P1074 宇宙无敌加法器
P1074 宇宙无敌加法器 转跳点:
随机推荐
- 自定义ios NSLog
#ifdef DEBUG #define MyLog(FORMAT, ...) fprintf(stderr,"Time:%s\t File:%s\t Methods:%s\t Line:% ...
- 基于FPGA实现的高速串行交换模块实现方法研究
基于FPGA实现的高速串行交换模块实现方法研究 https://wenku.baidu.com/view/9a3d501a227916888486d7ed.html
- FreeBSD这就是你的速度???
想一心一意的用一款UNIX操作系统,真不容易,FreeBSD你为啥这么坑? 用pkg安装软件,国内没有相应的源,只好从官网上下,欲哭无泪!有点怀恋CentOS的yum了,163的源,那速度杠杠滴! 先 ...
- Spell checker - poj 1035 (hash)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22541 Accepted: 8220 Description Yo ...
- shiro session过期后ajax请求跳转(转)
配置了 Shrio框架,session也集成进去了 ,发现问题session会话过期,点击页面,一直请求失败.本来想集成拦截器,过滤器,但是已经用了shiro框架,sessionDestroyed 方 ...
- select option 不可以选
<select> <option>Volvo</option> <option>Saab</option> <option disab ...
- 依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?
原文:https://blog.csdn.net/u012345283/article/details/39558537 原文:https://blog.csdn.net/wandrong/artic ...
- Win7机器上安装Ubuntu 14.0.4
折腾了两天,分享一下经历. 我须要在已经安装了win7的机器上安装Ubuntu 14.0.4 (两者共存),研究下来有例如以下几种方案, 都折腾了一遍.分享一下经验: 方式1: wubi.exe, 把 ...
- myeclipse中文编码错误,没有GBK选项
默认编码是UTF-8,但是导入GBK工程后,直接改为ISO-8859-1,但是还是编码错误. 用网上的: 全局编码设置:编码设置的方法:ToolBar-->Window-->Prefere ...
- postgresql学习文档
字符串函数: http://www.php100.com/manual/PostgreSQL8/functions-string.html http://gavin-chen.iteye.com/bl ...