1099 Lottery
题目: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的更多相关文章
- hdu 1099 Lottery
这是我第一次写博客,作为一个ACMer,经常进别人的博客,所以自己也想写写博客. HDU 1099 Lottery Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1099 Lottery (求数学期望)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1099 Lottery Time Limit: 2000/1000 MS (Java/Others) ...
- HDUOJ 1099——Lottery
Lottery Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- HDU - 1099 - Lottery - 概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...
- 【HDOJ】1099 Lottery
题意超难懂,实则一道概率论的题目.求P(n).P(n) = n*(1+1/2+1/3+1/4+...+1/n).结果如果可以除尽则表示为整数,否则表示为假分数. #include <cstdio ...
- 2018年暑假ACM个人训练题7 题解报告
A:HDU 1060 Leftmost Digit(求N^N的第一位数字 log10的巧妙使用) B:(还需要研究一下.....) C:HDU 1071 The area(求三个点确定的抛物线的面积, ...
- HDU1099---数学 | 思维
hdu 1099 Lottery题意:1~n编号的彩票,要买全,等概率条件下平均要买几张.已经买了m张时,买中剩下的概率为1-m/n,则要买的张数为1/(1-m/n)n=2,s=1+1/(1-1/2) ...
- UVA10325 The Lottery(容斥原理)
题意: 给n,m,和m个数(k1~km).求1~n中有多少个数不是(k1~km)中任意一数的倍数. 题解: 容斥模板题.反面考虑,a的倍数有n/a个:既是a,也是b的倍数,即lcm(a,b)的倍数有n ...
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;
错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java ...
随机推荐
- hdu5758 思维,树形dp
/*可以推测从叶子结点传送到叶子节点才能使传送次数最少,如果是偶数个叶子结点,那么传送leaf/2次就是答案,如果是奇数个叶子结点,则还有单独一条链需要覆盖dp[u]表示覆盖完u为根的子树需要走的边数 ...
- noip 2018游记
憋了好久的游记... 考虑到写游记是oi界的传统,所以还是应该写一篇的. day0: 上午9:30的火车出发,车上颓三国杀! 中午12:00到了大连,下午2:00才开始试机,还是得先去大连大学,在食堂 ...
- CF979E
非常好的dp,非常考dp的能力 很显然是个计数问题,那么很显然要么是排列组合,要么是递推,这道题很显然递推的面更大一些. 那么我们来设计一下状态: 设状态f[i][j][k][p]表示目前到了第i个点 ...
- Nginx详解二十五:Nginx架构篇之Nginx常见的问题
Nginx常见的问题 1.相同server_name多个虚拟主机优先级访问,是按读取文件的优先级来排序 在/opt/app/下准备3个code文件夹,下面放入3个html文件,里面的内容分别是code ...
- C++ Primer 笔记——const 限定符
1.因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化. 2.默认情况下const对象只在文件内有效,如果想在多个文件之间共享const对象,必须在变量的定义之前添加exter ...
- 【C++ Primer | 07】常用算法
第一部分 常用泛型算法: find(beg, end, val); equal(beg1, end1, beg2); fill(beg, end, val); fill_n(beg, cnt, val ...
- 【C++ Primer 第13章】2. 拷贝控制和资源管理
拷贝控制和资源管理 • 类的行为像一个值.意味着它应该有自己的状态,当我们拷贝一个像值得对象时,副本和原对象是完全独立的,改变副本不会对原对象有任何影响. • 行为像指针的类则共享状态.当我们拷贝一个 ...
- vi不保存退出
To quit the vi editor without saving any changes you've made If you are currently in insert or appen ...
- java.net.UnknownHostException: master
1:如果你报这个错误,第一反应应该是本地的host文件没有配置服务器名称和对应的ip地址,这个反应就对了.贴一下错误和解决方法: java.net.UnknownHostException: mast ...
- 异象石(就是sdio宝藏那题)
题解: 之前这道题写过两次题解了吧.. 实现的时候可以用set<int,cmp>来实现按照dfn排序 代码: 感觉别人的分类讨论比我的简单.. 但我觉得我这个写起来也不烦就不看别人的了.. ...