Description
你有一个大小为SSS的JabbyJabbyJabby,每次你可以从你已有的JabbyJabbyJabby中选择一个大小不为111的JabbyJabbyJabby,设他的大小为QQQ,然后把它分裂成aaa和Q−aQ-aQ−a,其中1≤a≤Q1\le a\le Q1≤a≤Q,这样你获得的收益是a⋅(Q−a)a\cdot (Q−a)a⋅(Q−a). 给定S,MS,MS,M,求最少分裂几次才能得到至少MMM的收益
Input
第一行两个正整数S,MS,MS,M
(2≤S≤1000,1≤m≤109)(2\le S\le 1000,1\le m\le 10^9)(2≤S≤1000,1≤m≤109)
Output
输出一个非负整数表示答案
如果无法达到MMM的收益输出−1-1−1
Sample Input
765 271828
Sample Output
14
Solution
从小到大枚举分离iii次,尽可能均分可以使得收益最大,算出最大收益如果不小于MMM则合法,时间复杂度O(S2)O(S^2)O(S2)
Code
#include<cstdio>
using namespace std;
int n,m;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<n;i++)
{
int q=n,res=0,u,v;
for(int j=1;j<=i;j++)
{
u=q/(i-j+2);
v=q-u;
res+=u*v;
q=v;
}
if(res>=m)
{
printf("%d\n",i);
return 0;
}
}
printf("-1\n");
return 0;
}