LQ0268 古堡算式枚举+进制
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0268 古堡算式枚举+进制相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2012初赛 C++ A组B题
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE ∗ ?=EDCBA
他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
问题分析
用枚举法,根据进制原理来实现。
最小的不同数字的5位数是10234,最大的不同数字的5位数是98765。枚举这个范围的数进行判定。
AC的C语言程序如下:
/* LQ0268 古堡算式 */
#include <stdio.h>
int main()
for (int i = 10234; i <= 98765; i++)
int d0 = i % 10;
int d1 = i / 10 % 10;
if (d1 == d0) continue;
int d2 = i / 100 % 10;
if (d2 == d0 || d2 == d1) continue;
int d3 = i / 1000 % 10;
if (d3 == d0 || d3 == d1 || d3 == d2) continue;
int d4 = i / 10000;
if (d4 == d0 || d4 == d1 || d4 == d2 || d4 == d3)
continue;
int t = d0 * 10000 + d1 * 1000 + d2 * 100 + d3 * 10 + d4;
if (t % i == 0)
printf("%d\\n", i);
break;
return 0;
以上是关于LQ0268 古堡算式枚举+进制的主要内容,如果未能解决你的问题,请参考以下文章