题目
凑算式
(如果显示有问题,可以参见【图1.jpg】)
这个算式中AI代表19的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
解题思路
1、暴力破解,遍历所有可能从中挑选除符合要求的。
2、注意6+8/3+952/714 ,除数要用到浮点类型保存如:double。
答案:29
//java代码
public static void main(String[] args) {
int x = 0;//保存结果
int[] nums = new int[9];//用于验证结果数据,
for (int i = 1; i < 10; i++) {//第1个数A
for (int j = 1; j < 10; j++) {//第2个数B
for (int k = 1; k < 10; k++) {//第3个数C
for (int l = 123; l <= 987; l++) {//被除数DEF
for (int m = 123; m <= 987; m++) {//除数GHI
double z = i * 1.0 + j * 1.0 / k * 1.0 + l * 1.0 / m * 1.0;
//验证结果是否等于10,等于10后将数据存入数组中验证是否为1-9.
if (z == 10.0) {
//数据存入数组
nums[0] = i;
nums[1] = j;
nums[2] = k;
nums[3] = l % 10;
nums[4] = (l / 10) % 10;
nums[5] = (l / 100) % 10;
nums[6] = m % 10;
nums[7] = (m / 10) % 10;
nums[8] = (m / 100) % 10;
//验证数组值是否为1-9
Arrays.sort(nums);
boolean flag = true;
for (int n = 0; n < 9; n++) {
if (n + 1 != nums[n]) {
flag = false;
break;
}
}
//符合要求计数器+1
if (flag) {
x++;
}
}
}
}
}
}
}
//输出结果
System.out.println(x);
}