题目链接:​​1093​


---晕晕的--

之前做这题的时候都是int----------会产生无解的可能---如果k大于2就一定有解--(每次都可以让香蕉靠近终点)


所以下面的代码中的i可以无限的打--- n / i 可以为实数--我也不知道为什就是可以了-------




代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
void solve()
{
double n,k;scanf("%lf%lf",&n,&k);
if(n<=k)
printf("%lld\n",(long long)n);
/*else if(k<3)
{
printf("-1\n");
}*/
else
{
double s=0,i=1.0;
while (n)
{
s+=min((k/i),n)*i;
n-=min((k/i),n);
i+=2;
}
if (n)
printf("-1\n");
else
{
long long ss=s;
if (s>ss) ss++;
printf("%lld\n",ss);
}
}
}
int main()
{
solve();
return 0;
}