题目
问题描述
有如下的加法算式。其中每个汉字代表一个数字。
(如存在对齐问题,可参见【图1.png】)
年
大年
过大年
能过大年
怎能过大年
我怎能过大年
- 让我怎能过大年
能能能能能能能
请填写“让我怎能过大年” 所代表的整数。
所有数字连在一起,中间不要空格。例如:“3125697”。当然,这个不是正确的答案。
注意:只填写一个整数,不要填写任何多余的内容。
解题思路
1、穷举,i= “让我怎能过大年”
2、首先通过取余发取出“年 大年 过大年 能过大年 怎能过大年 我怎能过大年 让我怎能过大年”这七个数的值并相加并保存结果。//sum保存
3、从i中截取出“能”的值并计算出“ 能能能能能能能”的值。//nen保存
4、对比sum的值和nensum的值如果相等则输出i。
结果:1572836
说明:一共有1572836 ,2072836两个值因为要求数字不能相同所以选第一个。如果需要判断数字中是否有重复数字只需将每位数字截取出来单独存入数组,遍历比较一下就ok了这里就不贴代码了。
//java代码
public static void main(String[] args) {
for (int i = 1234567; i < 9876543; i++) {
int sum = 0;// 保存7个数的和
for (int j = 0; j < 7; j++) {// 计算加法
// 截取出“年 大年 过大年 能过大年 怎能过大年 我怎能过大年 让我怎能过大年”这七个数并相加
sum = sum + (int) (i % Math.pow(10, 7 - j));
}
int nen = 1111111*(i / 1000 % 10);// 定义变量nen保存“能能能能能能能”的值
if (sum == nen) {// 比较能的和是否和加法相同
System.out.println(i);
}
//1572836
//2072836一共有两个值因为其中数字2重复所以选第一个,这里缺少了一个判断数字是否相同,因为是填空题就偷下懒
}
}
```