Pocky
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
现场赛的时候,先是我看错了一波题意,没求出来怎么出的样例。模拟了好多发,没有结果,于是交给队友,自己去搞了B题。后来队友看了一发,问了句1/(1+x)积分是多少,另一个队友答ln(1+x),于是顺利猜出答案。
题意嘛:给定一个长度为L的木棒,每次可以截取最长位D的长度,当剩下长度<=d的时候截取结束,要求达到要求所需要的截取次数的期望。
先码这边,看看书学习学习之后再来。
#include<bits/stdc++.h>
using namespace std;
int main(){
int T;
double a,b;
scanf("%d",&T);
while(T--){
scanf("%lf%lf",&a,&b);
if(a<=b)
printf("0.000000\n");
else
printf("%.6lf\n",log(a/b)+1);
}
return 0;
}