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 古堡算式枚举+进制的主要内容,如果未能解决你的问题,请参考以下文章

LQ0205 马虎的算式枚举+进制

蓝桥杯-福尔摩斯到某古堡探险

蓝桥杯java历年真题及答案整理21~40

LQ0046 凑算式枚举

LQ0064 9数算式枚举

LQ0066 算式900枚举