福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
/*暴力求解法*/ #include <stdio.h> int main(void) { 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); } return 0; }
#include<stdio.h> void main(){ int k,t1 ,t; for(k=10234;k<=98765;k++) /*各位不相同的五位数最小为10234,*/ { int flag[10]={0}; t=k; t1=0; while(t) { if(flag[t%10]) break ; flag[t%10] = 1 ; t1 = t1*10 + t%10 ; t /= 10 ; } if( t==0 && t1%k==0) { printf("%d * %d = %d\n",k,t1/k,t1); } } }