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 宇宙无敌加法器 转跳点:
随机推荐
- html 5 中的 6位 十六进制颜色码 代表的意思180313
人的眼睛看到的颜色有两种: ⒈ 一种是发光体发出的颜色,比如计算机显示器屏幕显示的颜色: ⒉ 另一种是物体本身不发光,而是反射的光产生 的颜色,比如看报纸和杂志上的颜色. 我们又知道任何颜色都是由 ...
- 第四天 ThinkPHP手把手高速拼接站点(四)
6月6日,晴天."熟梅天气豆生蛾.一见榴花感慨多. 芒种积阴凝雨润,菖蒲修剪莫蹉跎. " 九.后台编写-续-1 1.改动admin/Tpl/Login/index.html 自己改 ...
- linux navicat 过期 解决办法
:~$ cd .navicat:~/.navicat$ rm *.reg:~/.navicat$ rm .update-timestamp:~/.navicat$ rm navicat.crontab ...
- 简单使用shell 自动打包,发布项目 脚本
(1)打包,发布脚本 deploy.sh packagepath=/home/admin/testProject/project application=testProject mkdir -p $p ...
- 定时器(setTimeout/setInterval)调用带参函数失效解决方法
也许你曾碰到过这样的问题,不管是setInterval()还是setTimeout(),当code参数里放一个带参函数时,定时器都会失效,看下面这个例子: function test(str){ al ...
- 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置
在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...
- linux c 常常混淆的概念
指针函数 and 函数指针 指针函数是指带指针的函数,即本质是一个函数.函数都有返回类型(假设不返回值,则为无值型),仅仅只是指针函数返回类型是某一类型的指针. 定义格式 类型名 *函数名(函数參数列 ...
- HDU 2571 命运 (简单DP)
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- jQuery EasyUI的各历史版本和应用
from:http://blog.sina.com.cn/s/blog_b8be6dc40102xpe6.html 各历史版本下载地址: http://www.jeasyui.com/download ...
- 七个迹象说明你可能受到APT 攻击
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXF1c2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...