3718 - 三羊献瑞(2015蓝桥杯省赛第3题)
时间限制 : 1 秒
内存限制 : 128 MB
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:宋体;color:black;font-size:24pt;">观察下面的加法算式:</span>
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:Arial;color:black;font-size:24pt;"><span> </span>祥 瑞 生 辉</span>
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:Arial;color:black;font-size:24pt;"><span> </span></span><span style="font-family:Arial;color:black;font-size:24pt;">+<span> </span></span><span style="font-family:宋体;color:black;font-size:24pt;">三 羊 献 瑞</span>
<span style="font-size:24pt;"><span>• </span></span><span style="font-family:Arial;color:black;font-size:24pt;">-------------------</span>
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:Arial;color:black;font-size:24pt;"><span> </span></span><span style="font-family:宋体;color:black;font-size:24pt;">三 羊 生 瑞 气</span>
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:Arial;color:black;font-size:24pt;">(</span><span style="font-family:宋体;color:black;font-size:24pt;">如果有对齐问题,可以参看</span><span style="font-family:宋体;color:black;font-size:24pt;">【</span><span style="font-family:宋体;color:black;font-size:24pt;">图</span><span style="font-family:Arial;color:black;font-size:24pt;">1.jpg】)</span>
<img alt="" src="http://tk.hustoj.com:80/attached/image/20150425/20150425074542_99426.jpg" /><span style="font-family:Arial;color:black;font-size:24pt;"></span>
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:宋体;color:black;font-size:24pt;">其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。</span>
<span style="font-family:Arial;color:black;font-size:24pt;"></span>
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:宋体;color:black;font-size:24pt;">请你填写“三羊献瑞”所代表的</span><span style="font-family:Arial;color:black;font-size:24pt;">4</span><span style="font-family:宋体;color:black;font-size:24pt;">位数字(答案唯一),不要填写任何多余内容。</span>
题目输入
题目输出
输入/输出样例
输入格式
输出格式
C语言解答
#include <stdio.h> #define N 10 #define M 8 void perms(int p[],int start) { int i,t; if(start==M) { if((p[0]>p[4])&&p[0]&&p[4]&&(p[0]*1000+p[1]*100+p[2]*10+p[3]+p[4]*1000+p[5]*100+p[6]*10+p[1]==p[4]*10000+p[5]*1000+p[2]*100+p[1]*10+p[7])) printf("%d%d%d%d",p[4],p[5],p[6],p[1]); return; } for(i=start;i<N;i++) { t=p[i];p[i]=p[start];p[start]=t; perms(p,start+1); t=p[i];p[i]=p[start];p[start]=t; } } int main() { int p[]={0,1,2,3,4,5,6,7,8,9}; perms(p,0); return 0; }
C++解答
#include <stdio.h> #define N 10 #define M 8 void perms(int p[],int start) { int i,t; if(start==M) { if((p[0]>p[4])&&p[0]&&p[4]&&(p[0]*1000+p[1]*100+p[2]*10+p[3]+p[4]*1000+p[5]*100+p[6]*10+p[1]==p[4]*10000+p[5]*1000+p[2]*100+p[1]*10+p[7])) printf("%d%d%d%d\n",p[4],p[5],p[6],p[1]); return; } for(i=start;i<N;i++) { t=p[i];p[i]=p[start];p[start]=t;//交换 perms(p,start+1);//递归 t=p[i];p[i]=p[start];p[start]=t;//交换回来 } } int main() { int p[]={0,1,2,3,4,5,6,7,8,9}; perms(p,0);//从数组中索引号为0的元素开始进行排列 return 0; }