红包期望

题目描述

众所周知,在过年的时候每家每户都会发红包,现在clccle和qn在一起抢*信红包,但是她们觉得这样没有意思,便开始了计算,如果当clccle和sqn为第k个抢红包的人时候,所抢到红包金额的期望是多少?(红包的大小在[0,2n/m]中均匀随机,特别的当红包的大小小于2n/m时,最后剩下的金额会被包入最后一个红包中)

输入描述:

第一行,三个整数,m,n,T分别表示有一个红包可以被m个人领取,而且红包的总金额是n,接下来有T次询问

接下来T行,每行一个整数k,表示clccle和qn抢红包的时候是第几位

输出描述:

共T行

每行一个整数,表示clccle和qn所得到的红包大小的期望

示例1

输入

10 100 3
10
15
16

输出

10
0
0

备注:

对于全部数据

1<=m<=n<=1e18,1<=T<=50000

题解

#include<iostream>
using namespace std;
int main(){
	long long m,n;
	int T;
	scanf("%lld%lld",&m,&n);
	scanf("%d",&T);
	while(T--){
		int a;
		scanf("%d",&a);
		if(a>m){
			printf("0
"); 
		}
		else{
			printf("%lld
",n/m);
		}
	}
	return 0;
} 

期望就是每种结果的概率乘以结果的总和
红包大小的期望就是红包大小乘以这种大小的概率的总和,,红包大小的概率是固定的,都是(frac{1}{2n/m}),但是红包的大小不确定,它是在[0,2n/m]中均匀分配的,所以就积分下,(int_{0}^{frac{2n}{m}}frac{2n}{m}dfrac{2n}{m}),得出的结果再乘以固定的红包大小概率。最终结果得到(n/m)
还要注意,当排名k大于红包能分配的人数m时,主人公们所抢到红包的期望就一定是0了,因为这时根本就抢不到了。
所以当k>m时,就输出0,当k(leq)m时,就输出n/m。

原文地址:https://www.cnblogs.com/fate-/p/13360042.html