hdoj 1099 Lottery(期望)

原创 2012年03月29日 18:13:46

【题目大意】:给出n张不同的牌,每种无限张,问你收集齐n张不同的牌所需的平均次数。


【解题思路】:简单的期望题,假设现在手中有k张不同的牌,则下一张是不同的牌的概率是 (n-k)/n。那么抽到不重复的牌的期望张数是 n/(n-k)...

                            把n提出来~求E=n*sigema(1/k)(1<=k<=n)

                            一时大意,求分母的时候没边求边约分,爆longlong了wa了一次,没意识啊。


【代码】:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
                   
using namespace std;
                   
#define eps 1e-8
#define pi acos(-1.0)
#define inf 1<<30
#define linf 1LL<<60
#define pb push_back
#define lc(x) (x << 1)
#define rc(x) (x << 1 | 1)
#define lowbit(x) (x & (-x))
#define ll long long

int n;

ll get_len(ll n){
    ll len=0;
    while (n){
        n/=10,len++;
    }
    return len;
}

ll GCD(ll a,ll b){
    while (b) {
        ll c;
        c=a%b,a=b,b=c; 
    }
    return a;
}

void solve() {
    ll tmp=1;
    for (int i=1; i<=n; i++) tmp=tmp*i/GCD(tmp,i);
    ll ans=0;
    for (int i=1; i<=n; i++) ans+=tmp/i;
    ans*=n;
    ll gcdtmp;
    gcdtmp=GCD(ans,tmp);
    ans=ans/gcdtmp;
    tmp=tmp/gcdtmp;
    ll k;
    k=ans/tmp;
    ans=ans%tmp;
    if (ans==0) {cout << k << endl;}
    else {
        ll len1,len2;
        len1=get_len(k);
        len2=get_len(tmp);
        for (int i=1; i<=len1+1; i++) cout <<" " ;
        cout << ans << endl;
        cout << k << " ";
        for (int i=1; i<=len2; i++) cout << "-";
        cout << endl;
        for (int i=1; i<=len1+1; i++) cout << " ";
        cout << tmp << endl;
    }
}

int main() {
    while (~scanf("%d",&n)){
        solve();
    }
    return 0;
}


hdoj1099 Lottery(简单的数学问题变相考察最小公倍数)

来源:http://acm.hdu.edu.cn/showproblem.php?pid=1099 题目很难看懂,大意是求数学期望
  • CqZtw
  • CqZtw
  • 2017年06月23日 09:54
  • 201

HDU—— 1099 Lottery

题意:Eddy的公司出了一种彩票,
  • u014086857
  • u014086857
  • 2014年11月02日 14:59
  • 486

HDU/HDOJ 1099 Lottery

Lottery Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total...
  • xieshimao
  • xieshimao
  • 2011年09月19日 22:34
  • 1777

HDOJ 1099 Lottery

我不会算法哎,所以在杭电的首题就想找个算法来着 可是看了一道极短的题,忍不住去做了 单击666传送 题面如下: Lottery Time Limit: 2000/1000 MS (Java...
  • Bob__Huang
  • Bob__Huang
  • 2017年03月26日 17:11
  • 266

HDOJ HDU 1099 Lottery

HDOJ 1099 Lottery题目
  • Gy_1096440940
  • Gy_1096440940
  • 2017年09月12日 14:54
  • 102

杭电1099——Lottery(关于__int64的使用详解)

Lottery Problem Description Eddy's company publishes a kind of lottery.This set of lottery...
  • lishuhuakai
  • lishuhuakai
  • 2012年10月17日 22:03
  • 2122

hdu 1099 lottery

Lottery Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...
  • chengouxuan
  • chengouxuan
  • 2011年10月14日 16:47
  • 2252

HDU 1099 Lottery 乐透彩

原题: http://acm.hdu.edu.cn/showproblem.php?pid=1099题目大意: 每次发行n张彩票,要买多少张才能集齐。注意公式:买中的概率*买的张数=1。 假如发行...
  • qq_27508477
  • qq_27508477
  • 2015年07月26日 20:20
  • 297

hdu 1099 Lottery

//求 n(1+1/2+1/3+....1/n)------m+a/b 犯了好几个错误  检查了 两个小时 ,咕~~(╯﹏╰)  很水的题 ,老犯逻辑错误  哎  要命 //原题链接http:...
  • wconvey
  • wconvey
  • 2012年01月10日 15:18
  • 333

【数学】 HDU 1099 Lottery

HDU  #include #include #include #include using namespace std; __int64 gcd(__int64 a, __int64 b...
  • u013163567
  • u013163567
  • 2014年04月22日 15:18
  • 324
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdoj 1099 Lottery(期望)
举报原因:
原因补充:

(最多只允许输入30个字)