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