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

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

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

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

请你填写“三羊献瑞”所代表的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刷题时常常提醒自己的一句话:做算法题的练习过程总是比结果重要,要一步一步的在自己的想法上去进行优化,去体味思考的过程,思考的方式和方法永远处于学习过程中的绝巅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值