比赛 2025暑期集训第7场 评测结果 AAAAAAAAAA
题目名称 Power Calculus 最终得分 100
用户昵称 OTTF 运行时间 4.840 s
代码语言 C++ 内存使用 3.66 MiB
提交时间 2025-08-11 16:03:17
显示代码纯文本

#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;

int n;
int dep;
int nums[1145];

bool dfs (int now, int last) {
	if (now > dep || last < 1 || (last << (dep - now)) < n) {
		return false;
	}
	if (last == n || (last << (dep - now)) == n) {
		return true;
	}

	nums[now] = last;
	for (int i = 0; i <= now; i++) {
		int num = nums[i];
		if (dfs (now + 1, last + num)) {
			return true;
		}
		if (dfs (now + 1, last - num)) {
			return true;
		}
	}

	return false;
}

int main () {
	
	freopen ("pow_cal.in", "r", stdin);
	freopen ("pow_cal.out", "w", stdout);

	while (cin >> n, n) {
		for (dep = 0; ; dep++) {
			if (dfs (0, 1)) {
				cout << dep << endl;
				break;
			}
		}
	}
	
	return 0;
}