Codeforces Round #341 (Div. 2) C - Wet Shark and Flowers 数学期望

来源:互联网 发布:安卓麻将游戏源码 编辑:程序博客网 时间:2024/06/04 18:34

http://codeforces.com/contest/621/problem/C:

C. Wet Shark and Flowers
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are n sharks who grow flowers for Wet Shark. They are all sitting around the table, such that sharksi and i + 1 are neighbours for alli from 1 to n - 1. Sharks n and 1 are neighbours too.

Each shark will grow some number of flowers si. Fori-th shark value si is random integer equiprobably chosen in range fromli tori. Wet Shark has it's favourite prime numberp, and he really likes it! If for any pair ofneighbouring sharks i and j the product si·sj is divisible byp, then Wet Shark becomes happy and gives 1000 dollars to each of these sharks.

At the end of the day sharks sum all the money Wet Shark granted to them. Find the expectation of this value.

Input

The first line of the input contains two space-separated integers n and p (3 ≤ n ≤ 100 000, 2 ≤ p ≤ 109) — the number of sharks and Wet Shark's favourite prime number. It is guaranteed thatp is prime.

The i-th of the following n lines contains information about i-th shark — two space-separated integersli andri (1 ≤ li ≤ ri ≤ 109), the range of flowers shark i can produce. Remember thatsi is chosen equiprobably among all integers fromli tori, inclusive.

Output

Print a single real number — the expected number of dollars that the sharks receive in total. You answer will be considered correct if its absolute or relative error does not exceed10 - 6.

Namely: let's assume that your answer is a, and the answer of the jury isb. The checker program will consider your answer correct, if.

Examples
Input
3 21 2420 421420420 420421
Output
4500.0
Input
3 51 42 311 14
Output
0.0

蛙泳50米纪念= =

第一次做数学期望:

对于数学期望的定义是这样的。数学期望
E(X) = X1*p(X1) + X2*p(X2) + …… + Xn*p(Xn)
X1,X2,X3,……,Xn为这几个数据,p(X1),p(X2),p(X3),……p(Xn)为这几个数据的概率函数。在随机出现的几个数据中p(X1),p(X2),p(X3),……p(Xn)概率函数就理解为数据X1,X2,X3,……,Xn出现的频率f(Xi).则:
E(X) = X1*p(X1) + X2*p(X2) + …… + Xn*p(Xn) = X1*f1(X1) + X2*f2(X2) + …… + Xn*fn(Xn)
#include<cstdio>    using namespace std;double p[100000];int main(){    int n,prime,l,r;    double res=0;    scanf("%d%d",&n,&prime);    for(int i=0;i<n;i++){        scanf("%d%d",&l,&r);        int tmp;        tmp=r/prime-l/prime;//tmp是l和r之间可以被tmp整除的数的数量        if(l%prime==0)            tmp++;        p[i]=1-(double)(tmp)/(r-l+1);//p[i]是不可以被整除的概率    }    for(int i=0;i<n-1;i++){        res+=(1-p[i]*p[i+1])*2000;    }    res+=(1-p[0]*p[n-1])*2000;    printf("%.6f\n",res);    return 0;}


0 0