题目:猜算式
你一定还记得小学学习过的乘法计算过程,比如:
273
x 15
1365
273
4095
请你观察如下的乘法算式
***
x ***
***
星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如出现因字体而产生的对齐问题,请参看图p1.jpg)
请写出这个式子最终计算的结果,就是那个5位数是多少?
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
package lanqiaoMoNiC;
/**
*
* @author dgw
* @category 猜算式
*/
public class C {
// 出现记录次数
private static int[] numcount;
// 对数字进行截断
private static String of;
// 保存两个中间结果
private static char[] ch;
private static char[] ch2;
public static void main(String[] args) {
for (int i = 100; i <= 999; i++)
for (int j = 100; j <= 999; j++) {
numcount = new int[10];
int result = i * j;
splitCount(i);
splitCount(j);
ch2 = ch.clone();
for (int k = 0; k < 3; k++) {
int val = (ch2[k] - '0') * i;
splitCount(val);
}
splitCount(result);
if (isOk()) {
System.out.println(i + "*" + j + '=' + result);
}
}
}
private static boolean isOk() {
for (int i = 0; i <= 9; i++) {
if (numcount[i] != 2) {
return false;
}
}
return true;
}
private static void splitCount(int number) {
of = String.valueOf(number);
ch = of.toCharArray();
for (int i = 0; i < ch.length; i++) {
numcount[ch[i] - '0']++;
}
}
}
网友评论