比赛 |
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;
}