⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3436458_re.java

📁 北大大牛代码 1240道题的原代码 超级权威
💻 JAVA
字号:
package poj;

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 + -