Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] C 數學
連結:戳這裡
C. A Problem about Polyline
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
There is a polyline going through points (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + x, x) – ....We know that the polyline passes through the point (a, b). Find minimum positive value x such that it is true or determine that there is no such x.
Input
Only one line containing two positive integers a and b (1 ≤ a, b ≤ 109).
Output
Output the only line containing the answer. Your answer will be considered correct if its relative or absolute error doesn't exceed 10 - 9. If there is no such x then output - 1 as the answer.
Examples
input
3 1
output
1.000000000000
input
1 3
output
-1
input
4 1
output
1.250000000000
Note
You can see following graphs for sample 1 and sample 3.
題意:
給出a,b 問這個點是否在形如(0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + x, x) – ....的折線上
有的話輸出最小的x,否則輸出-1
思路:
當b>a時為-1
b<=a時均有答案 那麼既然x要儘可能的小,那麼中間的迴圈節儘可能的長
當然x>=b這是肯定的 可以得出 2*k*x=(a+b) (0<=k<=1e9) (至於為什麼是+b而不是-b 因為這樣x會盡可能的小)
所以x=(a+b)/(2*k) 而又x>=b 所以2*k<=(a+b)/b 當2*k為奇數的時候++
程式碼:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include <ctime>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<iomanip>
#include<cmath>
#define mst(ss,b) memset((ss),(b),sizeof(ss))
#define maxn 0x3f3f3f3f
#define MAX 1000100
///#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef unsigned long long ull;
#define INF (1ll<<60)-1
using namespace std;
double a,b;
const double eps=1e-9;
int main(){
cin>>a>>b;
if(b>a) {
cout<<-1<<endl;
return 0;
}
int t=a/b+1;
if(t%2==1) t--;
double ans=(a+b)*1.0/(t*1.0);
printf("%.12f\n",ans);
return 0;
}
相關文章
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] E 三分
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] (ABCDE題解)
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] D 字首字尾維護
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) C 模擬
- Codeforces Round #453 (Div. 2) C
- Codeforces Round #452 (Div. 2) C
- Codeforces Round 973 (Div. 2) C
- Codeforces Round 972 (Div. 2) C
- Codeforces Round 982 (Div. 2)(A~C)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) A 模擬
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B 暴力
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) E DFS
- Codeforces Round #360 (Div. 2) D 數學題
- Codeforces Round #224 (Div. 2)(數學、dfs)
- Codeforces Round #688 (Div. 2) C. Triangles(思維,數學)
- Codeforces Round #321 (Div. 2) C DFS
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) D 雙向dp
- Educational Codeforces Round 33 (Rated for Div. 2) C
- Codeforces Round #323 (Div. 2) C gcdGC
- Codeforces Round #325 (Div. 2) C 模擬
- Codeforces Round #359 (Div. 2) C DFS
- Codeforces Round #290 (Div. 2) A,B,C,D
- codeforces Round #252 (Div. 2) C - Valera and Tubes
- Codeforces Round #250 (Div. 2) C、The Child and Toy
- Codeforces Round 977 (Div. 2)(B-C2)
- Codeforces Round #639 (Div. 2)
- Codeforces Round #541 (Div. 2)
- Codeforces Round #682 (Div. 2)
- Codeforces Round #678 (Div. 2)
- Codeforces Round #747 (Div. 2)
- Codeforces Round #673 (Div. 2)
- Codeforces Round #672 (Div. 2)
- Codeforces Round #448 (Div. 2) A
- Codeforces Round #217 (Div. 2)
- Codeforces Round #256 (Div. 2)
- Codeforces Round #259 (Div. 2)
- Codeforces Round #257 (Div. 2)
- Codeforces Round #258 (Div. 2)