实验描述: 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把 ABCDE 所代表的数字写出来。
注意事项:取整数的某一位
应用程序:
#include<stdlib.h>
#include<stdio.h>
int get_One_bit(int value, int bit)
{
int i;
int weight =1;
for(i=0; i < bit; i++){
weight *= 10;
}
value %= weight;
value /= (weight /10);
return value;
}
int is_onebit_equal(int value)
{
int *a =(int *)malloc(sizeof(int) * 5);
int i;
int k;
for(i = 0;i < 5 ; i++){
a[i] = get_One_bit(value, i + 1);
for(k = 0; k < i; k++){
if(a[k] == a[i]){
return 0;
}
}
}
return 1;
}
int main(void)
{
unsigned int value;
unsigned int seed;
unsigned int result;
int i;
for(value = 10000;value <= 99999; value++)
for(seed = 2;seed<=9;seed++){
result = value * seed;
if(result > 99999){
continue;
}
for(i = 1;i <= 5; i++){
if(get_One_bit(result, i) != get_One_bit(value, 6 - i)){
break;
}
}
if(i==6){
if(is_onebit_equal(value)){
printf("%d * %d = %d\n", value, seed, result);
}
}
}
return 0;
}