P1291 [SHOI2002]百事世界杯之旅(概率)

Posted kafuuchino

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1291 [SHOI2002]百事世界杯之旅(概率)相关的知识,希望对你有一定的参考价值。

P1291 [SHOI2002]百事世界杯之旅

设$f(n,k)$表示共n个名字,剩下k个名字未收集到,还需购买饮料的平均次数

则有:

$f(n,k)=frac{n-k}{n}*f(n,k) + frac{k}{n}*f(n,k+1) +1$

移项整理,可得:

$f(n,k)=f(n,k+1)+frac{n}{k}$

根据递推式,可得:

$f(n,0)=nsum_{k=1}^{n}frac{1}{k}$

蓝后gcd搞搞约分

注意输出

end.

#include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
typedef long long ll;
ll p,q=1,g; int n;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
int wid(ll x){//计算位数
    int res=0;
    for(;x;x/=10)++res;
    return res;
}
int main(){
    scanf("%d",&n);
    for(re int i=1;i<=n;++i){
        p=p*i+q*n; q*=i;
        g=gcd(p,q);
        p/=g,q/=g;
    }g=p/q,p%=q;
//分多种情况输出
if(!p) printf("%lld",g); else{ for(re int i=wid(g);i>=1;--i) putchar( ); printf("%lld ",p); if(g) printf("%lld",g); for(re int i=wid(q);i>=1;--i) putchar(-); putchar( ); for(re int i=wid(g);i>=1;--i) putchar( ); printf("%lld",q); }return 0; }

 

以上是关于P1291 [SHOI2002]百事世界杯之旅(概率)的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1291 [SHOI2002]百事世界杯之旅

●洛谷P1291 [SHOI2002]百事世界杯之旅

P1291 [SHOI2002]百事世界杯之旅

P1291 [SHOI2002]百事世界杯之旅 - 期望

洛谷P1291 百事世界杯之旅

COGS 1224. [SHOI2002]百事世界杯之旅(期望概率)