【蓝桥杯】第六届省赛Java语言B组-三羊献瑞

【蓝桥杯】04第六届省赛Java语言B组题目:

三羊献瑞

观察下面的加法算式:

在这里插入图片描述

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

最终答案是:1085

这道题的解法不是很复杂,关键就是使用暴力法破解的时候条件的选择比较麻烦。我做的时候都觉得有点眼花。。。

public class 三羊献瑞 {
	public static void main(String[] args) {
		// 因为每一个位都不相等,所以最小是1023,最大是9876
		for (int i = 1023; i < 9876; i++) {
			for (int j = 1023; j < 9876; j++) {
				int sum = i + j;
				if (sum > 10234 && sum <= 97654) {
					char[] a1 = String.valueOf(i).toCharArray();
					char[] a2 = String.valueOf(j).toCharArray();
					char[] a3 = String.valueOf(sum).toCharArray();

					// 判断a1每一个位都不等
					if (a1[0] != a1[1] && a1[0] != a1[2] && a1[0] != a1[3] && a1[1] != a1[2] && a1[1] != a1[3]
							&& a1[2] != a1[3]) {
						// 判断a2全不等
						if (a2[0] != a2[1] && a2[0] != a2[2] && a2[0] != a2[3] && a2[1] != a2[2] && a2[1] != a2[3]
								&& a2[2] != a2[3]) {
							// 判断a3全不等
							if (a3[0] != a3[1] && a3[0] != a3[2] && a3[0] != a3[3] && a3[0] != a3[4] && a3[1] != a3[2]
									&& a3[1] != a3[3] && a3[1] != a3[4] && a3[2] != a3[3] && a3[2] != a3[4]
									&& a3[3] != a3[4]) {
								// 相等的位置
								if (a1[1] == a2[3] && a1[2] == a3[2] && a1[1] == a3[3] && a2[0] == a3[0]
										&& a2[1] == a3[1]) {
									// a1[0]不存在与a2和sum中,(祥不在其他两个中);
									if (!String.valueOf(j).contains(String.valueOf(a1[0]))
											&& !String.valueOf(sum).contains(String.valueOf(a1[0]))) {
										// a1[3]不存在与a2和sum中,(辉不在其他两个中);
										if (!String.valueOf(sum).contains(String.valueOf(a1[3]))
												&& !String.valueOf(j).contains(String.valueOf(a1[3]))) {
											// a3[4]不存在与a1和a2中,(气不在其他两个中);
											if (!String.valueOf(i).contains(String.valueOf(a3[4]))
													&& !String.valueOf(j).contains(String.valueOf(a3[4]))) {
												if (a1[2] != a2[2]) {
													System.out.println(" " + i);
													System.out.println("+" + j);
													System.out.println("-----");
													System.out.println(sum);
												}
											}
										}
									}

								}

							}
						}
					}

				}
			}
		}
	}
}

 9567
+1085
-----
10652
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值