Split
问题描述:
你有一个大小为𝑆的𝐽𝑎𝑏𝑏𝑦,每次你可以从你已有的𝐽𝑎𝑏𝑏𝑦中选择一个大小不为1的𝐽𝑎𝑏𝑏𝑦,设他的大小为𝑄,然后把它分裂成𝑎和𝑄−𝑎,其中1≤𝑎<𝑄,这样你获得的收益是𝑎∗(𝑄−𝑎)给定𝑆,𝑀,求最少分裂几次才能得到至少𝑀的收益
输入描述:
第一行两个正整数𝑆,𝑀
输出描述:
输出一个非负整数表示答案
如果无法达到𝑀的收益输出−1
/*
*文件名:main.cpp
*作者:m@yor
*完成日期:2020年2月10日
*版本号:v1.0
*/
#include <iostream>
using namespace std;
int main()
{
int s,m;
cin>>s>>m;
for(int i=1;i<s;++i)
{
int q=s,profit=0,a,b;
for(int j=1;j<=i;++j)
{
a=q/(i-j+2);
b=q-a;
profit+=a*b;
q=b;
}
if(profit>=m)
{
cout<<i<<endl;
return 0;
}
}
cout << -1 << endl;
return 0;
}