题目:
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
解法一、
//ABCDE*?=EDCBA
int a[10]={0,1,2,3,4,5,6,7,8,9};
int A=0,B=0,C=0,D=0,E=0,F=0;
for(int i=0;i<10;i++)
{
A=a[i];
for(int j=0;j<10;j++)
{
if(a[j]!=A)
{
B=a[j];
for(int k=0;k<10;k++)
{
if(a[k]!=A&&a[k]!=B)
{
C=a[k];
for(int l=0;l<10;l++)
{
if(a[l]!=A&&a[l]!=B&&a[l]!=C)
{
D=a[l];
for(int m=0;m<10;m++)
{
if(a[m]!=A&&a[m]!=B&&a[m]!=C&&a[m]!=D)
{
E=a[m];
for(int n=0;n<10;n++)
{
if(a[n]!=A&&a[n]!=B&&a[n]!=C&&a[n]!=D&&a[n]!=E)
{
F=a[n];
int t=10000*A+1000*B+100*C+10*D+E;
int s=10000*E+1000*D+100*C+10*B+A;
if(t*F==s)
cout<<t <<" "<<F<<endl;
}
}
}
}
}
}
}
}
}
}
解法二、
int x,y,k;
for(x=10000;x<100000;x++)
{
int a=x/10000;
int b=x%10000/1000;
int c=x%1000/100;
int d=x%100/10;
int e=x%10;
if(a==b || a==c || a==d || a==e || b==c || b==d || b==e
|| c==d || c==e || d==e) continue;
y = e * 10000 + d * 1000 + c * 100 + b * 10 + a;
for(k=1;k<10;k++)
if(x*k==y)
printf("%d*%d=%d\n",x,k,y);
}