蓝桥杯第六届省赛之三羊献瑞

蓝桥杯第六届省赛之三羊献瑞
三羊献瑞

观察下面的加法算式:
在这里插入图片描述

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

首先由这个加法算式的有进位我们可以知道三:1,同时祥:9,羊:0。同时瑞+羊=生,那么生+献必定产生进位,那么瑞+1=生,生+献=瑞->瑞+1+献=瑞+10->1+瑞=10这必然是不可能的,因为这样瑞=9而祥也等于9,那么必然辉+瑞产生了进位导致生+献=瑞->瑞+1+献+1=瑞+10->1+瑞=10->献=8。
在知道了这几个汉字所代表的数字之后,我们在用枚举法进行解题就简单多了。

#include <iostream>
using namespace std;
int main()
{
    
    
   int x,y,z,a,b,c;
   for(x=2;x<7;x++)
   {
    
    	  
	   for(y=2;y<=7;y++)
	   {
    
    
		   if(x==y)
			   continue;		   		   
		   for(z=2;z<=3;z++)
		   {
    
    
			   if(z==y || z==x)
				   continue;
			   a = 9000+x*100+(x+1)*10+y;
			   b = 1080+x;
			   c = 10000+(x+1)*100+x*10+z;
			   if(a+b == c && x+1!=y)
			   {
    
    
				   cout<<b<<endl;
			   }
			 
		   }
	   }
   }
   return 0;
}
/* 
1,因为是加法算式三是进位出来的 所以是三是1 
2,因为三是1且三加祥能进位,只有1+9能进位,所以祥是9 
但是考虑可能有进位的情况祥可能为8或9 * 
⑴,当祥为8时8+1+1(进位的1)=10 这时羊只能为0 而0+任何1~9数均<10 不可能进位 ——不成立 
⑵,当祥为9时9+1+1(进位的1)=1,羊为1 因为三为1 所以羊不为1 ——不成立 
综上得到三为1 祥为9 所以羊为0 
3,瑞+0=生只能是后面进位了,得到瑞+1等于生。 
又有生+献=瑞 即 瑞+1+献=瑞 即 1+献=0 
(到这可能有些不明白,解释下,这又是因为后位进1导致1+献=0 应为 1+献+1(进位的1)=0 即献=8) 
此时设瑞=x,辉=y,气=z。 
这时所有的数的关系如下 
 
这时从x开始试数,1,0已经有了 从2开始试数 
x=2时 x+y>=10,y>=8 而8,9已经存在—— 不成立 
x=3时 x+y>=10,y>=7 8,9已经存在 也只能为7,但 x+y=3+7+10 z应为0 因0已经存在—— 不成立 
x=4时 x+y>=10,y>=6 8,9已经存在 y可为6,7 当为6时z=0—— 不成立 当为7时 z=1 不成立 
x=5时 x+y>=10,y>=5 8,9已经存在 y为7时 z为2 此时总式成立

所以得出结果为 9567+1085=10652

得出三样献瑞 为1085 */

答案:1085
最后分享一下我在做算法练习和OJ刷题时常常提醒自己的一句话:做算法题的练习过程总是比结果重要,要一步一步的在自己的想法上去进行优化,去体味思考的过程,思考的方式和方法永远处于学习过程中的绝巅。

猜你喜欢

转载自blog.csdn.net/weixin_46610759/article/details/107570074