Problem B: 猜算式(11分)
Description
题目:
你一定还记得小学学习过的乘法计算过程,比如:
273
x 15
------
1365
273
------
4095
请你观察如下的乘法算式
***
x ***
--------
***
***
***
--------
*****
星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)
请输出这个式子最终计算的结果,就是那个5位数是多少?
注意:只需要输出一个整数,不要输出任何多余的内容。比如说明文字。
(注:蓝桥杯比赛时,此题为填空题,直接填写答案即可)
Input
无
Output
无
Sample Input
无
Sample Output
无
#include<bits/stdc++.h>
using namespace std;
int abc(int a,int *f)
{
while(a)
{
if(f[a%10]==2)return 0;
f[a%10]++;
a=a/10;
}
return 1;
}
int main()
{
for(int i=100;i<999;i++)
{
for(int j=100;j<999;j++)
{
int f[10]={0};
int a=i*(j%10);
int b=i*(j/10%10);
int c=i*(j/100);
if(a>=1000||b>=1000||c>=1000||a<100||b<100||c<100)continue;
int sum=i*j;
if(sum>=100000||sum<10000)continue;
if(abc(a,f)&&abc(b,f)&&abc(c,f)&&abc(i,f)&&abc(j,f)&&abc(sum,f))
{
printf("%d\n",sum);
}
}
}
return 0;
}