【第三届蓝桥杯】古堡算式

来源:互联网 发布:白俄罗斯交友软件 编辑:程序博客网 时间:2024/06/06 09:24
题目:古堡算式
    
    福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
    ABCDE * ? = EDCBA
    他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
    华生:“我猜也是!”
    于是,两人沉默了好久,还是没有算出合适的结果来。
    请你利用计算机的优势,找到破解的答案。
    把 ABCDE 所代表的数字写出来。
    答案写在“解答.txt”中,不要写在这里!

(本题5分) 


答案:21978


C++代码:

#include <iostream>using namespace std;bool isOk(int n, int *v) {int s[10] = {0};for(int i = 0; i < 5; i++) {if(s[v[i]]) //如果该数重复出现了,就可以直接返回false return false;s[v[i]] = 1; // 已出现过的数做标记 }return true;}int getNum(int *v) {int s = 0;for(int i = 0; i < 5; i++)s = s*10+v[i]; //逆序组合该数 return s;}int main() {int i, j, a, b, v[5] = {0};for(i = 12345; i <= 98765; i++) {for(a = 0, b = 1; a <= 5; a++, b *= 10)v[a] = i/b%10;if(isOk(i, v))for(int j = 2; j < 9; j++)if(i*j == getNum(v))cout << i;}return 0;} 

第三届蓝桥杯部分试题与答案