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

英文水平太差了,题目实在是不知道是什么意思,然后看了其他高手写的思路,才看明白。

题意,收集n张彩票(1~n)平均需要抽几次彩票。这相当于是概率的问题。

假设n=3;

收集1 2 3 有如下过程

第一次抽到的概率为 1     抽到平均需要1次

第二次抽到的概率为2/3   抽到平均需要2/3次

第三词抽到的概率为1/3   抽到的平均需要3/1次

so 平均需要 1+2/3+3/1=5.5次

 #include <stdio.h>
#include <iostream>
#include <string>
#include <cstring>
using namespace std; __int64 gcd(__int64 a, __int64 b)//求最小公倍数
{
if(b == ) return a;
return gcd(b, a % b);
} __int64 getlen(__int64 x)//求位数
{
__int64 cnt = ;
while(x)
{
cnt++;
x /= ;
}
return cnt;
} int main()
{
__int64 n;
while(scanf("%I64d", &n) != EOF)
{
__int64 fm = , fz = n, temp;//fz分子 fm分母;
for(__int64 i = ; i <= n; i++)
{
fz = fz * i + fm * n;//分子 分母交叉相乘 eg:3/1+3/2=(/2*3+1*3)/1*2=9/2;
fm *= i;
temp = gcd(fz, fm);
fz /= temp;
fm /= temp;
}
__int64 a = fz / fm;
if(fz % fm == )
{
printf("%I64d\n", a);
continue;
}
fz = fz - fm * a;
//计算位数
__int64 len_fm = getlen(fm);//经过上面的化简必然是分子小于分母
// __int64 len_fz = getlen(fz);
__int64 len_a = getlen(a);
// __int64 maxx = max(len_fm, len_fz);
for(__int64 i = ; i < len_a + ; i++)
putchar(' ');
printf("%I64d\n", fz);
printf("%I64d ", a);
for(__int64 i = ; i < len_fm; i++)
putchar('-');
puts("");
for(__int64 i = ; i < len_a + ; i++)
putchar(' ');
printf("%I64d\n", fm);
}
return ;
}

1099 Lottery的更多相关文章

  1. hdu 1099 Lottery

    这是我第一次写博客,作为一个ACMer,经常进别人的博客,所以自己也想写写博客. HDU 1099 Lottery Time Limit: 2000/1000 MS (Java/Others)     ...

  2. HDU 1099 Lottery (求数学期望)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1099 Lottery Time Limit: 2000/1000 MS (Java/Others)   ...

  3. HDUOJ 1099——Lottery

    Lottery Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

  5. 【HDOJ】1099 Lottery

    题意超难懂,实则一道概率论的题目.求P(n).P(n) = n*(1+1/2+1/3+1/4+...+1/n).结果如果可以除尽则表示为整数,否则表示为假分数. #include <cstdio ...

  6. 2018年暑假ACM个人训练题7 题解报告

    A:HDU 1060 Leftmost Digit(求N^N的第一位数字 log10的巧妙使用) B:(还需要研究一下.....) C:HDU 1071 The area(求三个点确定的抛物线的面积, ...

  7. HDU1099---数学 | 思维

    hdu 1099 Lottery题意:1~n编号的彩票,要买全,等概率条件下平均要买几张.已经买了m张时,买中剩下的概率为1-m/n,则要买的张数为1/(1-m/n)n=2,s=1+1/(1-1/2) ...

  8. UVA10325 The Lottery(容斥原理)

    题意: 给n,m,和m个数(k1~km).求1~n中有多少个数不是(k1~km)中任意一数的倍数. 题解: 容斥模板题.反面考虑,a的倍数有n/a个:既是a,也是b的倍数,即lcm(a,b)的倍数有n ...

  9. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;

     错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099; nested exception is:  java ...

随机推荐

  1. hdu5758 思维,树形dp

    /*可以推测从叶子结点传送到叶子节点才能使传送次数最少,如果是偶数个叶子结点,那么传送leaf/2次就是答案,如果是奇数个叶子结点,则还有单独一条链需要覆盖dp[u]表示覆盖完u为根的子树需要走的边数 ...

  2. noip 2018游记

    憋了好久的游记... 考虑到写游记是oi界的传统,所以还是应该写一篇的. day0: 上午9:30的火车出发,车上颓三国杀! 中午12:00到了大连,下午2:00才开始试机,还是得先去大连大学,在食堂 ...

  3. CF979E

    非常好的dp,非常考dp的能力 很显然是个计数问题,那么很显然要么是排列组合,要么是递推,这道题很显然递推的面更大一些. 那么我们来设计一下状态: 设状态f[i][j][k][p]表示目前到了第i个点 ...

  4. Nginx详解二十五:Nginx架构篇之Nginx常见的问题

    Nginx常见的问题 1.相同server_name多个虚拟主机优先级访问,是按读取文件的优先级来排序 在/opt/app/下准备3个code文件夹,下面放入3个html文件,里面的内容分别是code ...

  5. C++ Primer 笔记——const 限定符

    1.因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化. 2.默认情况下const对象只在文件内有效,如果想在多个文件之间共享const对象,必须在变量的定义之前添加exter ...

  6. 【C++ Primer | 07】常用算法

    第一部分 常用泛型算法: find(beg, end, val); equal(beg1, end1, beg2); fill(beg, end, val); fill_n(beg, cnt, val ...

  7. 【C++ Primer 第13章】2. 拷贝控制和资源管理

    拷贝控制和资源管理 • 类的行为像一个值.意味着它应该有自己的状态,当我们拷贝一个像值得对象时,副本和原对象是完全独立的,改变副本不会对原对象有任何影响. • 行为像指针的类则共享状态.当我们拷贝一个 ...

  8. vi不保存退出

    To quit the vi editor without saving any changes you've made If you are currently in insert or appen ...

  9. java.net.UnknownHostException: master

    1:如果你报这个错误,第一反应应该是本地的host文件没有配置服务器名称和对应的ip地址,这个反应就对了.贴一下错误和解决方法: java.net.UnknownHostException: mast ...

  10. 异象石(就是sdio宝藏那题)

    题解: 之前这道题写过两次题解了吧.. 实现的时候可以用set<int,cmp>来实现按照dfn排序 代码: 感觉别人的分类讨论比我的简单.. 但我觉得我这个写起来也不烦就不看别人的了.. ...