历届试题 猜字谜

    xiaoxiao2021-03-25  138

     村的元宵节灯会上有一迷题:

            请猜谜 * 请猜谜 = 请边赏灯边猜

        小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。

        请你用计算机按小明的思路算一下,然后提交“请猜谜”三个字所代表的整数即可。

        请严格按照格式,通过浏览器提交答案。

        注意:只提交一个3位的整数,不要写其它附加内容,比如:说明性的文字。

    思路:

    穷举或者dfs

    dfs

    #include<iostream> #include<algorithm> #include<cstdio> using namespace std; int a[6] = {0}; void dfs(int x) { int i; if (a[0] == 0 && x>0) return ; if (x>6) return ; else if (x==6) { if ((a[0]*100+a[1]*10+a[2]) * (a[0]*100+a[1]*10+a[2]) == a[0]*100000+a[3]*10000+a[4]*1000+a[5]*100+a[3]*10+a[1]) { printf("%d%d%d",a[0],a[1],a[2]); } return ; } for (i=0; i<=9; i++) { a[x] = i; dfs(x+1); } } int main() { dfs(0); return 0; }

    穷举

    #include<iostream> #include<algorithm> #include<cstdio> using namespace std; int main() { int a[6]; for (a[0]=1; a[0]<=9; a[0]++) { for (a[1]=0; a[1]<=9; a[1]++) { if (a[0] == a[1]) continue; for (a[2]=0; a[2]<=9; a[2]++) { if (a[2] == a[0] || a[2] == a[1]) continue; for (a[3]=0; a[3]<=9; a[3]++) { if (a[3] == a[0] || a[3] == a[1] || a[3] == a[2]) continue; for (a[4]=0; a[4]<=9; a[4]++) { if (a[4] == a[0] || a[4] == a[1] || a[4] == a[2] || a[4] == a[3]) continue; for (a[5]=0; a[5]<=9; a[5]++) { if (a[5] == a[0] || a[5] == a[1] || a[5] == a[2] || a[5] == a[3] || a[5] == a[4]) continue; if ((a[0]*100+a[1]*10+a[2]) * (a[0]*100+a[1]*10+a[2]) == a[0]*100000+a[3]*10000+a[4]*1000+a[5]*100+a[3]*10+a[1]) { cout<<a[0]<<a[1]<<a[2]; break; } } } } } } } }

    转载请注明原文地址: https://ju.6miu.com/read-8524.html

    最新回复(0)