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 ...
随机推荐
- C++ lstrlen()
关于lstrlen function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/ms647492(v=vs.85).asp ...
- C++ Primer 笔记——固有的不可移植的特性
1.为了支持底层编程,C++定义了一些固有的不可移植的特性,所谓不可移植特性是指因机器而异的特性. 2.一个位域中含有一定数量的二进制位,位域在内存中的布局是机器相关的.位域的类型必须是整型或枚举类型 ...
- IDEA项目的复制操作
另一种复制项目的方法 完成
- IOU和非极大值抑制
如何判断对象检测算法运作良好呢? 一.交并比(Intersection over union,IoU) 是产生的候选框(candidate bound)与原标记框(ground truth bound ...
- Vim设计
像 IDE 一样使用 vim 免费的编程中文书籍索引
- 【C++ Primer | 10】泛型算法
#include<iostream> #include<algorithm> #include<vector> #include<string> #in ...
- 一脸懵逼学习Hive(数据仓库基础构架)
Hive是什么?其体系结构简介*Hive的安装与管理*HiveQL数据类型,表以及表的操作*HiveQL查询数据***Hive的Java客户端** Hive的自定义函数UDF* 1:什么是Hive(一 ...
- [warn] 7#7: *676 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000007
nginx 上传文件遇到的Bug. fastcgi_buffer_size 128k; fastcgi_buffers 8 128k; fastcgi_busy_buffers_size 128k; ...
- Multidex(二)之Dex预加载优化
Multidex(二)之Dex预加载优化 https://www.jianshu.com/p/2891599511ff
- 用webstorm搭建vue项目
本文只针对新手. 首先要明白几个名词(概念). Node.js: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 ...