博客园 首页 私信博主 显示目录 隐藏目录 管理

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

观察下面的加法算式:

祥 瑞生 辉

+

三羊 献 瑞

=

三 羊 生 瑞 气  

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

分析:这个题目就是单纯暴力就可以,另一个就是想到全排列next_permutation就可以了

 1 #include<iostream>
 2     #include<algorithm>
 3     using namespace std;
 4 
 5     const int maxn = 10;
 6     int main(){
 7         int num[maxn]={0};
 8         for( int i=0; i<maxn; i++ ){
 9             num[i]=i;
10         }
11         do{/*全排列后选用2~9这八个数作为选中的值*/
12             if(!num[2]||!num[6]) continue;
13             int x=num[2]*1000+num[3]*100+num[4]*10+num[5];
14             int y=num[6]*1000+num[7]*100+num[8]*10+num[3];
15             int z=num[6]*10000+num[7]*1000+num[4]*100+num[3]*10+num[9];
16             if(x+y==z) printf("%d + %d = %d\n",x,y,z);
17         }while(next_permutation(num,num+maxn));
18 
19         return 0;    
20     }

 

posted @ 2019-02-17 16:23  Brave_WTZ  阅读(227)  评论(0编辑  收藏  举报