5 条题解
-
0
#include <bits/stdc++.h> using namespace std; int minn=INT_MAX,n,f[100000]; void dfs(int deep,int s,int k){ if(s==0){ minn=min(minn,k); return ; } if(deep==0) return ; int x=s%(deep*deep); if(f[x]<=k+s/(deep*deep)) dfs(deep-1,s,k); else{ f[x]=k+s/(deep*deep); dfs(deep-1,x,k+s/(deep*deep)); dfs(deep-1,s,k); } } int main(){ ios::sync_with_stdio(false); for(int i=0;i<=99999;i++) f[i]=INT_MAX; cin>>n; dfs(sqrt(n),n,0); cout<<minn; return 0; }
信息
- ID
- 381
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者