这么老的题估计也只有xinyue能找到。。目测以前的scoi都不到现在的提高组难度啊。。。
但是还是因为我太水了所以第一次只有40分,首先没考虑一段可以被分成好多段的情况只是考虑了二分的情况。。
其次,没有注意到题目中说的是最少也就是可以多了。。。。
就这么多,实在是太水了我。。。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,f[900];
int main()
{
scanf("%d",&n);
memset(f,0,sizeof(f));
for(int i=1;i<=259;i++)
{
f[i]=f[i-1]+1;
for(int j=1;j<=i-1;j++)
if(i%j)
continue;
else
f[i]=min(f[i],f[i/j]+5+2*(j-1));
}
int ans=f[n];
for(int i=n+1;i<=256;i++)
ans=min(ans,f[i]);
printf("%d",ans);
return 0;
}