1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=1010,M=1e5+10; int f[M]; int v[N]; int main() { int n; cin>>n; for(int i=1;i*i<=n;i++) { v[i]=i*i; } int V=n; n=sqrt(n); memset(f,0x3f,sizeof f); f[0]=0;//最开始一个都没有 for(int i=1;i<=n;i++) { for(int j=v[i];j<=V;j++) { f[j]=min(f[j],f[j-v[i]]+1); } } cout<<f[V]; return 0; }
- 1
Information
- ID
- 2203
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 8
- Accepted
- 2
- Uploaded By