首先明确一点的是,所给的点
(a,b)
肯定在斜率为负的斜线上面使得
x
最小。
那么我们怎么确定是在哪一条折线呢?看下图:
每条斜率为-1的折线都可以被分成虚线间的几部分。这是使得
也就是说,是那一条折线就是
其中D为截距。
求得 x <script type="math/tex" id="MathJax-Element-978">x</script>。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
if(b>a)printf("-1\n");
else
{
int k=(a/b);
if(k&1)k++;
printf("%.12f\n",(a+b)*1.0/k);
}
return 0;
}