HDU 1099 [Lottery] 数学期望

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1099

题目大意:一套卡片有n张,每次购买随机获得一张卡片,问集齐一套卡片的期望次数是多少?

关键思想:知道此处期望是概率的倒数即可,比如有5张卡片,

第一步你获得想要卡片的概率是1,倒数为1;

第二步你获得想要卡片的概率是4/5,倒数为5/4;

第三步你获得想要卡片的概率是3/5,倒数为5/3;

……累加即为结果,格式输出有些坑爹,耐心就好。

代码如下:

#include <iostream>
using namespace std;

typedef long long ll;

ll GCD(ll a,ll b){
    if(a==0||b==0)return 1;
    return a%b==0?b:GCD(b,a%b);
}

int digits(ll n){
    int d=0;
    while(n){
        n/=10;
        d++;
    }
    return d;
}

int main(){
    int n;
    ll num,deno,inte;//分子分母整数部分
    while(scanf("%d",&n)!=EOF){
        num=0,deno=1,inte=1;
        for(int i=1;i<=n-1;i++){
            num=num*i+deno*n;
            deno=deno*i;

            ll gcd=GCD(num,deno);//约分
            num/=gcd;
            deno/=gcd;
        }
        inte+=num/deno;//整数部分
        num=num%deno;//分数部分
        if(num==0)printf("%lld\n",inte);//若能整除
        else{//格式化输出
            for(int i=0;i<=digits(inte);i++)printf(" ");
            printf("%lld\n",num);
            printf("%lld ",inte);
            for(int i=0;i<digits(deno);i++)printf("-");
            printf("\n");
            for(int i=0;i<=digits(inte);i++)printf(" ");
            printf("%lld\n",deno);
        }

    }
    return 0;
}
时间: 2024-10-05 09:45:10

HDU 1099 [Lottery] 数学期望的相关文章

HDU - 1099 - Lottery - 概率dp

http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[n]=0,因为我们已经集齐了. \[dp[i]=(\frac{i}{n}*dp[i]+\frac{n-i}{n}*dp[i+1])+1\] 移项得答案. 然后写个分数类,注意约分. #include<bits/stdc++.h> using namespace std; typedef long

hdu 3853(数学期望入门)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Submission(s): 2512    Accepted Submission(s): 1022 Problem Description Akemi Homura is a Mahou Shou

HDU 1099 Lottery

Lottery Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4348    Accepted Submission(s): 1934 Problem Description Eddy's company publishes a kind of lottery.This set of lottery which are numbered

HDU 4405 飞行棋上的数学期望

突然发现每次出现有关数学期望的题目都不会做,就只能找些虽然水但自己还是做不出的算数学期望的水题练练手了 题目大意: 从起点0点开始到达点n,通过每次掷色子前进,可扔出1,2,3,4,5,6这6种情况,扔到几前进几,当然对应飞行通道可以通过x直达一点y,x<y,计算到达n点或超过n 点要扔色子的次数的数学期望 从某一点 i 扔完色子可到达 i+1,i+2,i+3,i+4,i+5,i+6这6个点,令dp[i]为到达末尾的数学期望 那么到达之后6个点的数学期望是一样的,那么dp[i]=dp[i+1]*

【HDOJ】1099 Lottery

题意超难懂,实则一道概率论的题目.求P(n).P(n) = n*(1+1/2+1/3+1/4+...+1/n).结果如果可以除尽则表示为整数,否则表示为假分数. 1 #include <cstdio> 2 #include <cstring> 3 4 #define MAXN 25 5 6 __int64 buf[MAXN]; 7 8 __int64 gcd(__int64 a, __int64 b) { 9 if (b == 0) return a; 10 else return

数学期望

数学期望又称均值(加权均值),例如 甲8环,9环,10环的概率分别为0.1,0.8,0.1,即权重,则加权均值为8*0.1+9*0.8+10*0.1=9:同理乙的加权均值为8.95 则甲的平均成绩优于乙 对于离散型随机变量 连续型随机变量

数学1——概率与数学期望

1.什么是数学期望? 数学期望亦称期望.期望值等.在概率论和统计学中,一个离散型随机变量的期望值是试验中每一次可能出现的结果的概率乘以其结果的总和. 这是什么意思呢?假如我们来玩一个游戏,一共52张牌,其中有4个A.我们1元钱赌一把,如果你抽中了A,那么我给你10元钱,否则你的1元钱就输给我了.在这个游戏中,抽中的概率是$\frac{1}{13} ( \frac{4}{52} ) $,结果是赢10元钱:抽不中概率是$\frac{12}{13}$,结果是亏1元钱.那么你赢的概率,也就是期望值是$-

poj3682:数学期望,O(1)做法附推导过程

这几天一直在磨蹭这题..第一个答案很容易,但在第二个答案我无法算出来了,于是只好求助于Zayin.Zayin又求助于我们年级里面的一个研究生数学老师..而现在终于算出来了,我看了看,自己也推出来几次了,先看题:) King Arthur's Birthday Celebration Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2921 Accepted: 926 Description King Arthur is an

HDUBoard Game Dice (数学期望)

推出的公式是M^x*x/N,大概意思是M^x*x这些种可能后一定会找出一个裁判,在除以N为数学期望. 可能和数学公式还有关系. #include<stdio.h> #include<math.h> __int64 gcd(__int64 a,__int64 b){ return b == 0 ? a : gcd(b, a%b); } int main() { __int64 i,j,n,m,t,x,a,b,temp,sum; scanf("%I64d",&