比赛 2025暑期集训第7场 评测结果 AAAAAAAAAA
题目名称 Power Calculus 最终得分 100
用户昵称 hsl_beat 运行时间 4.424 s
代码语言 C++ 内存使用 3.65 MiB
提交时间 2025-08-11 15:43:23
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n, dp[14];
int ans;
bool dfs(int x)
{
    if (dp[x] == n) {
        return 1;
    }
    if (x == ans) {
        return 0;
    }
    int tp = dp[0];              
    for (int i = 1; i <= x; i++) {
        tp = max(tp, dp[i]);   
    }
    if ((tp << (ans - x)) >= n) {
        for (int i = x; i >= 0; i--) {
            dp[x + 1] = dp[x] + dp[i];             
            if (dfs(x + 1)) {
                return 1;
            }
            dp[x + 1] = dp[x] - dp[i];             
            if (dfs(x + 1)) {
                return 1;
            }
        }
    }
    return 0;
}
int main()
{
    freopen("pow_cal.in", "r", stdin);
    freopen("pow_cal.out", "w", stdout);
    while (1) {
        cin >> n;
        if (n == 0) {
            return 0;
        }
        if (n == 1) {
            cout << 0 << '\n';
            continue;
        }
        dp[0] = 1;                          
        bool flag = 0;
        for (ans = 1; ans <= 13; ans++) {
            if (dfs(0)) {    
                cout << ans << '\n';
                break;
            }
        }
    }
    return 0;
}