你一定还记得小学学习过的乘法计算过程,比如:
请你观察如下的乘法算式
星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)
请写出这个式子最终计算的结果,就是那个5位数是多少?
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
#include <iostream>
using namespace std;
int a[6];
int count;
bool judge() {
count = 0;
int *visit = new int[10] (); //初始化都为0
for(int i = 0; i < 6; i++) {
while(a[i] > 0) { //a[i]拆分存入visit数组并检查
visit[a[i] % 10]++;
if(visit[a[i] % 10] > 2) //记录使用次数
return false;
a[i] /= 10;
count++; //保证存入20次
}
}
if(count == 20)
return true;
return false;
}
int main()
{
for(int i = 100; i < 1000; i++) {
for(int j = 100; j < 1000; j++) {
int s = 0;
a[s++] = i;//a
a[s++] = j;//b
a[s++] = i*(j % 10);//c
a[s++] = i*(j / 10 % 10);//d
a[s++] = i*(j / 100 % 10);//e
a[s++] = i*j;//f
if(judge()) {
cout << i*j;
}
}
}
return 0;
}