题目:古堡算式
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
第三届蓝桥杯部分试题与答案
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
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;
}
第三届蓝桥杯部分试题与答案