LQ0066 算式900枚举

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0066 算式900枚举相关的知识,希望对你有一定的参考价值。

题目出处:蓝桥杯2017初赛 C++ C组D题

题目描述
小明的作业本上有道思考题:算式: (□□□□-□□□□)*□□=900
其中的小方块代表09的数字,这10个方块刚好包含了09中的所有数字。
注意:0不能作为某个数字的首位。
小明经过几天的努力,终于做出了答案!如下:(5012-4987)*36=900
用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。

输出格式
输出格式需要与示例严格一致;
括号及运算符号不要用中文输入法;
整个算式中不能包含空格。

问题分析
用枚举法来解决。

AC的C++程序如下:

/* LQ0066 算式900 */

#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;

int a[] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

void print(int t1, int t2, int t3)

    if (t1 != 5012 && t2 != 4973)
        printf("(%d-%d)*%d=900\\n", t1, t2, t3);


int main()

    do 
       if (a[0] != 0 && a[4] != 0 && a[8] != 0) 
           int t1 = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
           int t2 = a[4] * 1000 + a[5] * 100 + a[6] * 10 + a[7];
           int t3 = a[8] * 10 + a[9];
           if ((t1 - t2) * t3 == 900) print(t1, t2, t3);
       
     while (next_permutation(a, a + 10));

    return 0;

以上是关于LQ0066 算式900枚举的主要内容,如果未能解决你的问题,请参考以下文章

LQ0064 9数算式枚举

LQ0268 古堡算式枚举+进制

LQ0268 古堡算式枚举+进制

LQ0205 马虎的算式枚举+进制

算法题每日一练---第12天:算式900

LQ0192 神奇算式填空题