枚举法,暴力破解,直接罗列各种情况。
例1
题目描述:
古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
ABCDE * ? = EDCBA
他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
#include <stdio.h>
#include<string.h>
int main()
{
int a,b,c,d,e,x;
for(a=0; a<=9; a++)
for(b=0; b<=9; b++)
for(c=0; c<=9; c++)
for(d=0; d<=9; d++)
for(e=0; e<=9; e++)
for(x=0; x<=9; x++)
if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)
if((a*10000+b*1000+c*100+d*10+e)*x==e*10000+d*1000+c*100+b*10+a)
printf("%d%d%d%d%d",a,b,c,d,e);
return 0;
}
例二
三羊生瑞气
观察一下加法算式,一个汉字代表一个数字,求三羊献瑞代表的数字。
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
#include<stdio.h>
int main()
{
int a,b,c,d,f,g,h;
int num1,num2,sum;
for(a=2;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
for(d=0;d<=9;d++)
for(f=0;f<=9;f++)
for(g=0;g<=9;g++)
for(h=0;h<=9;h++)
if(a!=b && a!=c && a!=d && a!=f && a!=g && a!=h
&& b!=c && b!=d && b!=f && b!= g &&b!=h
&& c!=d && c!=f && c!= g && c!=h
&& d!=f && d!=g &&d!=h
&& f!=g && f!=h
&& g!=h
&& a!=1 && b!=1 && c!=1 && d!=1 && f!=1 && g!=1 && h!=1)
{
num1=a*1000 + b*100 + c*10 + d;
num2=1*1000 + f*100 + g*10 + b;
sum=1*10000 + f*1000 + c*100 + b*10 + h;
if(sum==(num1 + num2))
{
printf("1%d%d%d",f,g,b);
}
}
return 0;
}