记录编号 |
604778 |
评测结果 |
AAAAAAAAAA |
题目名称 |
3451.Power Calculus |
最终得分 |
100 |
用户昵称 |
xxz |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
6.411 s |
提交时间 |
2025-08-11 19:30:53 |
内存使用 |
4.14 MiB |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans,xxz[114];
bool dfs(int x,int step){
if(step>ans||x<=0)return 0;
if(x==n)return 1;
if(x<<(ans-step)<n)return 0;
if(x*pow(2,ans-step)==n)return 1;
xxz[step]=x;
for(int i=0;i<=step;i++){
if(dfs(x+xxz[i],step+1)||dfs(x-xxz[i],step+1)){
return 1;
}
}
return 0;
}
signed main(){
// freopen("pow_cal.in","r",stdin);freopen("pow_cal.out","w",stdout);
while(cin>>n){
if(!n)break;
ans=0;
if(n==1)printf("0\n");
else
{
while(!dfs(1,0)){
ans++;
}
printf("%lld\n",ans);
}
}
return 0;
}