2016 ICPC青島賽 hdu5984 C Pocky
阿新 • • 發佈:2019-01-06
Pocky
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 156 Accepted Submission(s): 68
Problem Description Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative stripes in the coating, of length L.
While the length of remaining pocky is longer than d, we perform the following procedure. We break the pocky at any point on it in an equal possibility and this will divide the remaining pocky into two parts. Take the left part and eat it. When it is not longer than d, we do not repeat this procedure.
Now we want to know the expected number of times we should repeat the procedure above. Round it to 6 decimal places behind the decimal point.
Input The first line of input contains an integer N which is the number of test cases. Each of the N lines contains two float-numbers L and d respectively with at most 5 decimal places behind the decimal point where 1 ≤ d, L ≤ 150.
Output For each test case, output the expected number of times rounded to 6 decimal places behind the decimal point in a line.
Sample Input 6 1.0 1.0 2.0 1.0 4.0 1.0 8.0 1.0 16.0 1.0 7.00 3.00
Sample Output 0.000000 1.693147 2.386294 3.079442 3.772589 1.847298 這題有毒,看樣例猜了一波公式。。。然後就過了。。。至於題意,我也不太懂。直接給程式碼好了。
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath> #include<queue> #include<functional> typedef long long LL; using namespace std; #define maxn 100005 #define ll l,mid,now<<1 #define rr mid+1,r,now<<1|1 #define lson l1,mid,l2,r2,now<<1 #define rson mid+1,r1,l2,r2,now<<1|1 #define pi 3.14159 const int mod = 1e9 + 7; int main(){ int t; scanf("%d", &t); while (t--){ double d, l; scanf("%lf%lf", &d, &l); if (d <= l){ printf("0.000000\n"); continue; } printf("%.6lf\n", 1 + log(d / l)); } }