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 ...
随机推荐
- dubbo的工作原理
dubbo工作原理 第一层:service层,接口层,给服务提供者和消费者来实现的 第二层:config层,配置层,主要是对dubbo进行各种配置的 第三层:proxy层,服务代理层,透明生成客户端的 ...
- |ERROR|ERROR: missing data for column "createtime" (seg3 slice1 192.168.66.23:40001 pid=33370)之mysql换行符或者空格引起的问题
1.最近的kettle的数据交换配置,启动kettle引起的错误,如下所示: |ERROR|ERROR: missing data pid=) 引发这个错误,并不是这个字段引起的错误,一般是这个字段临 ...
- vue.js学习:1.0到2.0的变化(区别)
一.生命周期 1.1.0的生命周期: 周期 解释 init 组件刚刚被创建,但Data.method等属性还没被计算出来 created 组件创建已经完成,但DOM还没被生成出来 beforeComp ...
- Visual Studio 2012 Update 3
不知道是不是都关注Win8.1和Visual Studio 2013 preview去了… 貌似没大有人发现2012的update3在update2后2月就出了… ms明显加快了开发速度额… KB a ...
- java web获取请求体内容
Java Web中如何获取请求体内容呢? 我们知道请求方式分为两种:Get,Post. /*** * Compatible with GET and POST * * @param request * ...
- Zookeeper(一)CentOS7.5搭建Zookeeper3.4.12集群与命令行操作
一. 分布式安装部署 1.0 下载地址 官网首页: https://zookeeper.apache.org/ 下载地址: http://mirror.bit.edu.cn/apache/zookee ...
- order by 导出数据不一致的问题
转自 http://blog.csdn.net/wwwwei_csdn/article/details/78181197 前言 数据库分页是后台经常要使用的技术手段,有时候进行数据库查询会根据业务 ...
- 2. ELK 之kibana 简介、获取、安装
简介 kibana是什么?简单理解就是一种可视化工具,比如日志记录之后的可视化操作工具,支持 折线图,饼状图,表格等,支持按时间维度等自定义维度角度 数据搜索.分析等等. 2. 获取 https: ...
- 【Android】Android 设置Activity窗体 不显示标题和全屏显示
[一]Android 设置Activity窗体 不显示标题 android:theme="@android:style/Theme.NoTitleBar" <activity ...
- JMeter学习笔记2-图形界面简单介绍
废话少说直接干活的给: 一.打开和运行JMeter,出现UI界面.如图下所示: 工具栏:常见操作的图标集合,有New(新建), Template(模板) ,Save(保存),Start(开始) ,St ...