15蓝桥杯省模拟赛 8-近似分解 填空

37 阅读1分钟

相近分解【省模拟赛】 - 蓝桥云课 (lanqiao.cn) image.png

思路

逆向思维 ,不去枚举n,而是直接枚举n的各位数

因为第23不是很大,所以可以给各位数一个范围   这里给20  其实给10都可以,因为各位数最大就为9


各位数如果满足条件  那就放到一个set里面。

set是有序的 把第23个输出就是输出第23

code

image.png

注意细节,写错了答案就错了,如下 a是错的,b是正确的:

image.png

#include <iostream>
#include <set>
using namespace std;
set<int> s;

int  main() {
	int cnt = 0;

	for (int a = 1; a <= 10; ++a) {
		for (int b = 1; b <= 10; ++b) {
			for (int c = 1; c <= 10; ++c) {
				if (abs(a - b) <= 2 &&
				        abs(a - c) <= 2 &&
				        abs(b - c) <= 2 ) { // 注意这里改成了等于号==
					s.insert(a * b * c);
				}
			}
		}
	}

//此时set里面的值已经是有序的了
	for (int a : s) {
		++cnt;
		cout << cnt << ":" << a << endl;
	}
	return 0;
}