题目描述:
三羊献瑞
观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
(如果有对齐问题,可以参看【图1.jpg】)
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
直接上代码:
package wiki.zimo.exam06;public class Demo03 {public static void main(String[] args) {for (int i = 9999; i >= 1000; i--) {for (int j = 1000; j <= 9999; j++) {if (!isRepeat(i, j)) {int result = i + j;if (judge(result, i, j)) {System.out.println(" "+i);System.out.println("+"+j);System.out.println("-------------------");System.out.println(result);return;}}}}}static boolean judge(int result,int n1,int n2) {String resultStr = String.valueOf(result);if (resultStr.length() < 5) {return false;}if (isRepeat(resultStr)) {return false;}String numStr1 = String.valueOf(n1);String numStr2 = String.valueOf(n2);if (numStr1.charAt(0) == resultStr.charAt(4)) {return false;}if (numStr1.charAt(0) == numStr2.charAt(2)) {return false;}if (numStr1.charAt(2) == numStr2.charAt(2)) {return false;}if (numStr1.charAt(3) == numStr2.charAt(2)) {return false;}char rui = numStr1.charAt(1);char sheng = numStr1.charAt(2);char san = numStr2.charAt(0);char yang = numStr2.charAt(1);if (rui == numStr2.charAt(3) && rui == resultStr.charAt(3) && sheng == resultStr.charAt(2) && san == resultStr.charAt(0) && yang == resultStr.charAt(1)) {return true;}return false;}static boolean isRepeat(int n1,int n2) {String str1 = String.valueOf(n1);String str2 = String.valueOf(n2);if (isRepeat(str1) || isRepeat(str2)) {return true;}return false;}static boolean isRepeat(String str) {for (int i = 0; i < str.length(); i++) {char ch = str.charAt(i);int index = str.indexOf(ch, i + 1);if (index > 0) {return true;}}return false;}
}