您的位置:首页 > 其它

HDOJ 2100 Lovekey

2017-10-12 17:03 204 查看
HDACM2100

此题别被题目忽悠去把输入的二十六进制数转换成十进制然后去计算,然后把十进制转换成二十六进制。如果非要转换那就得调用大数的方法去做。

import java.util.Scanner;

public class Main{

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String a = sc.next();
String b = sc.next();
char[] A = a.toCharArray();
char[] B = b.toCharArray();
char[] C = twentySixAdd(A, B);
boolean boo = true;
for (char d : C) {
if (boo&&d=='A'||d=='\0') {
continue;
}
System.out.print(d);
boo = false;
}
System.out.println();
}
}
public static char[] twentySixAdd(char[] a,char[] b){
char[] c = new char[(a.length>b.length?a.length:b.length)+1];
char m = 0;

for (int i = c.length-1; i>0; i--) {
if (c[i]=='\0') {
c[i] = 'A';
}
if (i>c.length-(a.length<b.length?a.length:b.length)-1) {
char s = (char)(c[i]+a[i-(c.length-a.length)]+b[i-(c.length-b.length)]-'A'-'A');
if (s>'Z') {
c[i] = (char) (s-'Z'-1+'A');
c[i-1] = 'B';

}else{
c[i] = s;
}
}else {
if (a.length>b.length) {
char s = (char) (c[i]+a[i-(c.length-a.length)]-'A');
if (s>'Z') {
c[i] = (char) (s-'Z'-1+'A');
c[i-1] = 'B';
}else{
c[i] = s;
}
}else {
char s = (char) (c[i]+b[i-(c.length-b.length)]-'A');
if (s>'Z') {
c[i] = (char) (s-'Z'-1+'A');
c[i-1] = 'B';
}else{
c[i] = s;
}
}
}
}
return c;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: