codeforce 621C Wet Shark and Flowers

时间:2023-03-09 03:56:51
codeforce 621C 	 Wet Shark and Flowers

题意:输入个n和质数p,n个区间,每个区间可以等概率的任选一个数,如果选的这个区间和它下个区间选的数的积是p的倍数的话(n的下个是1),就挣2000,问挣的期望

思路:整体的期望可以分成每对之间的期望。期望=概率乘2000.

得到钱概率=1-得不到钱的概率

 #include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define clc(a,b) memset(a,b,sizeof(a))
const int maxn=; double p[]; int main()
{
int n,m,l,r;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%d%d",&l,&r);
int len=r/m-l/m;
if(l%m==)
len++;
p[i]=1.0-(double)len/(r-l+);
}
double ans=;
for(int i=;i<n;i++)
{
ans+=(1.0-p[i]*p[i+])*;
}
ans+=(1.0-p[n]*p[])*;
printf("%lf\n",ans);
}