观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
--------------------
三 羊 生 瑞 气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案:1085
分析:利用枚举法,挨个尝试,直到找到为止,条件:“加法和不能相同数字”。
#include "stdio.h"
/*
a0 a1 a2 a3
+ a4 a5 a6 a1
-----------------
a4 a5 a2 a1 a7
*/
int sheep(void)
{
int i,j;
int a[8]={0};
int flat=2;
int sum1,sum2,sum3;
a[4]=1;
for(a[0] = 8 ;a[0] < 10; a[0]++)
for(a[1] = 0 ;a[1] < 10; a[1]++)
for(a[2] = 0 ;a[2] < 10; a[2]++)
for(a[3] = 0 ;a[3] < 10; a[3]++)
for(a[5] = 0 ;a[5] < 10; a[5]++)
for(a[6] = 0 ;a[6] < 10; a[6]++)
for(a[7] = 0 ;a[7] < 10; a[7]++)
{
sum1=a[0]*1000 + a[1]*100 + a[2]*10 + a[3];
sum2=a[4]*1000 + a[5]*100 + a[6]*10 + a[1];
sum3=a[4]*10000 + a[5]*1000 + a[2]*100 + a[1]*10 + a[7];
if(sum1+sum2==sum3)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(i!=j && a[i] == a[j])
{
flat=1;
break;
}
flat=0;
}
if(flat==1) break;
}
if(flat==0)
{
printf("\n%4d %d %d %d\n",a[0],a[1],a[2],a[3]);
printf("+%3d %d %d %d\n",a[4],a[5],a[6],a[1]);
printf("-----------------\n");
printf("%2d %d %d %d %d\n",a[4],a[5],a[2],a[1],a[7]);
}
}
}
return 0;
}
void main(void)
{
sheep();
}