博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CodeForces 621C】Wet Shark and Flowers
阅读量:7231 次
发布时间:2019-06-29

本文共 3200 字,大约阅读时间需要 10 分钟。

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

Each shark will grow some number of flowers si. For i-th shark value si is random integer equiprobably chosen in range from li to ri. Wet Shark has it's favourite prime number p, and he really likes it! If for any pair of neighbouringsharks i and j the product si·sj is divisible by p, 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 that p is prime.

The i-th of the following n lines contains information about i-th shark — two space-separated integers li and ri(1 ≤ li ≤ ri ≤ 109), the range of flowers shark i can produce. Remember that si is chosen equiprobably among all integers from li to ri, 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 exceed 10 - 6.

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

Sample test(s)
input
3 2 1 2 420 421 420420 420421
output
4500.0
input
3 5 1 4 2 3 11 14
output
0.0
Note

A prime number is a positive integer number that is divisible only by 1 and itself. 1 is not considered to be prime.

Consider the first sample. First shark grows some number of flowers from 1 to 2, second sharks grows from 420 to421 flowers and third from 420420 to 420421. There are eight cases for the quantities of flowers (s0, s1, s2) each shark grows:

  1. (1, 420, 420420): note that ss1 = 420, ss2 = 176576400, and ss0 = 420420. For each pair, 1000dollars will be awarded to each shark. Therefore, each shark will be awarded 2000 dollars, for a total of 6000dollars.
  2. (1, 420, 420421): now, the product ss0 is not divisible by 2. Therefore, sharks s0 and s2 will receive 1000dollars, while shark s1 will receive 2000. The total is 4000.
  3. (1, 421, 420420): total is 4000
  4. (1, 421, 420421): total is 0.
  5. (2, 420, 420420): total is 6000.
  6. (2, 420, 420421): total is 6000.
  7. (2, 421, 420420): total is 6000.
  8. (2, 421, 420421): total is 4000.

The expected value is .

In the second sample, no combination of quantities will garner the sharks any money.

题意

n个人围成环,如果两个相邻人的数字相乘后可以整除p,那么这两个人都得到1000元,现在给我们每个人的数字的范围,让我们求所有人得到的钱的期望。

分析

只要两个相邻的人数字中有一个可以整除那就两个人都能得到1000,我们求出每个人不能整除p的概率pp[i]=1-(r/p-(l-1)/p)/(r-l+1),因为这里是整除,所以r/p就是1到r有几个p的倍数,总个数是r-l+1。

然后两个邻居可以得到的概率就是只有两个人都不能整除时,就不能得到钱,即1-pp[i]*pp[i%n+1],概率累加起来再乘上2000就好了。

代码

#include 
long long n,p,l,r;double pp[100005],ans;int main(){ scanf("%lld%lld",&n,&p); for(int i=1;i<=n;i++) { scanf("%lld%lld",&l,&r); pp[i]=1-(double)(r/p-(l-1)/p)/(r-l+1); } for(int i=1;i<=n;i++) ans+=1-pp[i]*pp[i%n+1]; printf("%f",ans*2000); return 0;}

 

 

转载地址:http://iupfm.baihongyu.com/

你可能感兴趣的文章
介绍几个jsp页面传对象的方法
查看>>
我的Jakarta+Commons
查看>>
Bootstrap的使用
查看>>
python设置文字输出颜色
查看>>
WARNING:tornado.access:403 GET /websocket (::1) 1.00ms
查看>>
cocos creator游戏适配这事
查看>>
AngularJS - contorller app module
查看>>
CF666E. Forensic Examination
查看>>
apue第16章笔记
查看>>
Nvidia Driver
查看>>
NIO 相关解析
查看>>
Loj #2304. 「NOI2017」泳池
查看>>
面试技巧,如何通过索引说数据库优化能力,内容来自Java web轻量级开发面试教程...
查看>>
Python实现:某个用户登录后,查看自己拥有所有权限
查看>>
iOS微信朋友圈 评论点击姓名功能
查看>>
Servlet和模本办法
查看>>
static和final修饰方法
查看>>
读《认知三部曲》
查看>>
关于SVN 目录结构
查看>>
tp5页面输出时,搜索后跳转下一页的处理
查看>>