close

 題目:左邊一排字母不為0,試解出字母代表的數字。

     SEND

+   MORE

------------

    MONEY

 

解法:

1.從最左邊開始看,S,M最大值為9+9=18,所以最多會進一位,

由此可知M=1,S+1要進位所以S=9,O=0。

2.知道了S,M,O三個字母數字,可以讓程式少跑很多迴圈,加速運算的速度。

程式:

#include<stdio.h>

int main(void)
{
	long D,E,N,R,Y,S=9,M=1,O=0;
	long MONEY,SEND,MORE;
	long sum;
     printf("\n數值字謎\n");
     printf("\n    SEND");
     printf("\n+   MORE");
     printf("\n--------");
     printf("\n   MONEY\n");
     
     for(D=2;D<=8;D++)
     	for(E=2;E<=8;E++)
     		if(D!=E)
     			for(N=2;N<=8;N++)
     				if(N!=E && N!=D)
     					for(R=2;R<=8;R++)
     						if(R!=N && R!=E && R!=D)
     							for(Y=2;Y<=8;Y++)
     								if(Y!=R && Y!=N && Y!=E && Y!=D)
     									{
     										MONEY=(((M*10+O)*10+N)*10+E)*10+Y;
     										SEND=((S*10+E)*10+N)*10+D;
     										MORE=((M*10+O)*10+R)*10+E;
     										sum=SEND+MORE;
     										if(sum==MONEY)
     										{
     											printf("\n\n答案為: \n");
                                   				printf("\n %8ld", SEND);
                                   				printf("\n+%8ld", MORE);
                                   				printf("\n---------");
                                  	 			printf("\n %8ld", MONEY);
     										}
     									}
}

 

參考資料:名題精選百則

arrow
arrow
    文章標籤
    數值字謎
    全站熱搜

    東勢厝滴yang 發表在 痞客邦 留言(0) 人氣()