3714 - 猜灯谜(2013决赛C/C++B组第1题)
<span style="font-size:24pt;"><span>•</span></span><span style="font-family:Arial;color:black;font-size:24pt;">A </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-family:宋体;color:black;font-size:24pt;">请猜谜</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:Arial;color:black;font-size:24pt;"> = </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-family:宋体;color:black;font-size:24pt;">小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。</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 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-family:Arial;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;">”</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-family:宋体;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;">3</span><span style="font-family:宋体;color:black;font-size:24pt;">位的整数,不要写其它附加内容,比如:说明性的文字。</span><span style="font-family:Arial;color:black;font-size:24pt;"> </span>
题目输入
题目输出
输入/输出样例
题目输入
题目输出
C语言解答
#include <stdio.h> #define N 10 #define M 6 void perms(int p[],int start) { int i,t; if(start==M) { if((p[0]*100+p[1]*10+p[2])*(p[0]*100+p[1]*10+p[2])==(p[0]*100000+p[3]*10000+p[4]*1000+p[5]*100+p[3]*10+p[1])) printf("%d%d%d\n",p[0],p[1],p[2]); return; } for(i=start;i<N;i++)// 注意i从start开始,不从0开始哦 { 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[N]; for(int i=0;i<N;i++) p[i]=i;//数组赋初值 perms(p,0);//从数组中索引号为0的元素开始进行排列 return 0; }
C++解答
#include <stdio.h> #define N 10 #define M 6 void perms(int p[],int start) { int i,t; if(start==M) { if((p[0]*100+p[1]*10+p[2])*(p[0]*100+p[1]*10+p[2])==(p[0]*100000+p[3]*10000+p[4]*1000+p[5]*100+p[3]*10+p[1])) printf("%d%d%d\n",p[0],p[1],p[2]); return; } for(i=start;i<N;i++)// 注意i从start开始,不从0开始哦 { 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[N]; for(int i=0;i<N;i++) p[i]=i;//数组赋初值 perms(p,0);//从数组中索引号为0的元素开始进行排列 return 0; }