当前位置: 代码迷 >> 综合 >> 第6届蓝桥杯大赛个人赛省赛(软件类)真题\Java语言B组\3
  详细解决方案

第6届蓝桥杯大赛个人赛省赛(软件类)真题\Java语言B组\3

热度:77   发布时间:2023-10-27 05:53:10.0

题目描述:


三羊献瑞

观察下面的加法算式:

      祥 瑞 生 辉
  +   三 羊 献 瑞
-------------------
   三 羊 生 瑞 气

(如果有对齐问题,可以参看【图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;}
}