题目描述
侦察员小甲在被捕前在墙上写了两行文字(ASCII字符),其中包含了他获取的敌人密码,破译员琪琪经过3天3夜终于找到了破解方法,请编程帮助琪琪计算密码。
计算密码方法:只保留两行文字的数字,然后对两行数字从左向右逐位相加,不足位补0,将每位所求和加70得到ASCII,再按照字符输出就是密码。
例如:以下两行文字
<mary303>and<kitty739>
!!76$$=(50){%;%}?>
提取数字逐位相加
3 0 3 7 3 9
7 6 5 0
=============
10 6 8 7 3 9
逐位加70得到ASCII序列
80 76 78 77 73 79
对应的密码是 PLNMIO
输入
两行字符序列(每行不超过80个字符)
输出
一行密码
样例输入
<mary303>and<kitty739>
!!76$$=(50){%;%}?>
样例输出
PLNMIO
【AC代码】:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
String s2 = sc.nextLine();
char a[] = new char[80];
char b[] = new char[80];
int k1 = 0, k2 = 0;
for (int i = 0; i < s1.length(); i++)
if (s1.charAt(i) >= '0' && s1.charAt(i) <= '9') {
a[k1] = s1.charAt(i);
k1++;
}
for (int i = 0; i < s2.length(); i++)
if (s2.charAt(i) >= '0' && s2.charAt(i) <= '9') {
b[k2] = s2.charAt(i);
k2++;
}
int c[] = new int[80];
if (k1 > k2) {
for (int i = k2; i <= k1; i++)
b[i] = '0';// 将较短数字空位补上0
for (int i = 0; i < k1; i++) {
c[i] = (int) a[i] + (int) b[i] + 70 - 48 - 48;// a[i]和b[i]转化成数字时各自要减去48
System.out.print((char) c[i]);
}
} else {
for (int i = k1; i <= k2; i++)
a[i] = '0';// 将较短数字空位补上0
for (int i = 0; i < k2; i++) {
c[i] = (int) a[i] + (int) b[i] + 70 - 48 - 48;// a[i]和b[i]转化成数字时各自要减去48
System.out.print((char) c[i]);
}
}
}
}
博客讲述侦察员小甲被捕前在墙上留两行文字含敌人密码,破译员琪琪找到破解方法。需编程实现保留两行文字数字,逐位相加不足位补0,每位和加70得ASCII并输出字符作为密码,还给出输入输出要求及样例。
3万+

被折叠的 条评论
为什么被折叠?



