📄 3436471_ac_344ms_2936k.java
字号:
import java.util.*;
public class Main {
private Scanner in;
private static String[][] table = new String[256][256];
static {
table['V']['V'] = "V";
table['V']['U'] = "U";
table['V']['C'] = "C";
table['V']['D'] = "D";
table['U']['V'] = "U";
table['U']['U'] = "C";
table['U']['C'] = "D";
table['U']['D'] = "VU";
table['C']['V'] = "C";
table['C']['U'] = "D";
table['C']['C'] = "VU";
table['C']['D'] = "UU";
table['D']['V'] = "D";
table['D']['U'] = "VU";
table['D']['C'] = "UU";
table['D']['D'] = "CU";
}
public static void main(String[] args) {
new Main().run();
}
private void run() {
in = new Scanner(System.in);
int cas;
String num1, num2, op;
cas = in.nextInt();
System.out.println("COWCULATIONS OUTPUT");
while (cas-- > 0) {
num1 = in.next();
num2 = in.next();
for (int i = 0; i < 3; i++) {
op = in.next();
switch (op.charAt(0)) {
case 'L':
num2 = leftShift(num2);
break;
case 'R':
num2 = rightShift(num2);
break;
case 'A':
num2 = add(num1, num2);
break;
default:
break;
}
//System.out.println(num2);
}
num2 = modify(num2);
System.out.println(num2.equals(in.next()) ? "YES" : "NO");
}
System.out.println("END OF OUTPUT");
}
private String modify(String num) {
String ret = "";
for (int i = 0; i < 8 - num.length(); i++) {
ret += "V";
}
return ret + num;
}
private String leftShift(String num) {
return num + "V";
}
private String rightShift(String num) {
return "V" + num.substring(0, num.length() - 1);
}
private String add(String num1, String num2) {
String ret = "";
int len1, len2;
int i, j;
char a, b;
String carry, tmp = "";
len1 = num1.length();
len2 = num2.length();
carry = "";
for (i = len1 - 1, j = len2 - 1; i >= 0 || j >= 0; i--, j--) {
a = i < 0 ? '0' : num1.charAt(i);
b = j < 0 ? '0' : num2.charAt(j);
if (a != '0' && b != '0') {
tmp = table[a][b].substring(0, 1);
if (carry.length() != 0) {
tmp = table['U'][tmp.charAt(0)];
}
if (table[a][b].length() == 2) {
carry = "U";
} else {
if (tmp.length() == 2) {
carry = "U";
tmp = tmp.substring(0, 1);
} else {
carry = "";
}
}
} else {
if (a == '0') {
tmp = "" + b;
if (carry.length() != 0) {
tmp = table['U'][tmp.charAt(0)];
}
if (tmp.length() == 2) {
tmp = tmp.substring(0, 1);
carry = "U";
} else {
carry = "";
}
} else {
tmp = "" + a;
if (carry.length() != 0) {
tmp = table['U'][tmp.charAt(0)];
}
if (tmp.length() == 2) {
tmp = tmp.substring(0, 1);
carry = "U";
} else {
carry = "";
}
}
}
ret += tmp;
}
if (carry.length() == 1) {
ret += "U";
}
return reverse(ret);
}
private String reverse(String num) {
String ret = "";
for (int i = num.length() - 1; i >= 0; i--) {
ret += num.charAt(i);
}
return ret;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -