参考了第一篇题解的思路,代码是自己打的
#include <bits/stdc++.h>
using namespace std;
int n,f[41000];
int main()
{
cin>>n;
if (!n)
{
putchar ('0');
return 0;
}
f[1]=1;
for (int i=2;i<=n+10;i++)
{
f[i]=max(f[i],f[i-1]+1);
for (int u=1,k=u*2+5;k<=i;u++) k=u*2+5,f[i]=max(f[i],(u+1)*f[i-k]);
if (f[i]>=n)
{
cout<<i;
return 0;
}
}
return 0;
}
评测记录