题目:猜算式
你一定还记得小学学习过的乘法计算过程,比如:
273
x 15
------
1365
273
------
4095
请你观察如下的乘法算式
***
x ***
--------
***
***
***
--------
*****
星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)
请写出这个式子最终计算的结果,就是那个5位数是多少?
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
纯暴力解决 注意 题目要求 0-9的数字都包含两项,
#include<stdio.h>
#include<string.h>
int ans[10];
void ddd(int x)
{
while(x)
{
ans[x%10]++;
x/=10;
}
}
int main()
{
int i,j,k;
int fflag;
for(i=100;i<1000;i++)
{
for(j=100;j<1000;j++)
{
fflag=0;
if(i*j>100000)
break;
memset(ans,0,sizeof(ans));
int a[2];
a[0]=i; a[1]=j;
ddd(a[0]);
ddd(a[1]);
ddd(i*j);
int b[3],temp1=i;
k=0;int temp2=j;
while(temp2)
{
b[k]=temp1*(temp2%10);
if(b[k]>1000||b[k]<100)
{
fflag=1;
break;
}
ddd(b[k++]);
temp2/=10;
}
if(fflag)
continue;
for(int l=0;l<=9;l++)
{
if(ans[l]!=2)
{
fflag=1;
break;
}
}
if(!fflag)
{
printf("%d\n",i*j);
break;
}
}
}
}