uva10288 Coupons 【概率 分数】
题目:
题意:
一共n种不同的礼券,每次得到每种礼券的概率相同。求期望多少次可以得到所有n种礼券。结果以带分数形式输出。1<= n <=33.
思路:
假设当前已经得到k种,获得新的一种的概率是(n-k)/n,则对应期望是n/(n-k)。求和得到步数期望是n/n+n/(n-1)+...+n/1=n*sum(1/i) (1<= i <= n)。需要注意及时约分,用分数类模板。
程序:
#include <cstdio>
#include <cassert>
#include <cstdlib> long long gcd (long long a, long long b) {
return b == ? a : gcd(b, a % b);
} class fraction {
public:
fraction() {
numerator = ;
denominator = ;
}
fraction(long long num) {
numerator = num;
denominator = ;
}
fraction (long long a, long long b) {
assert(b != );
if (b < ) {
numerator = -a;
denominator = -b;
} else {
numerator = a;
denominator = b;
}
this->reduction();
} void operator = (long long num) {
numerator = num;
denominator = ;
} void operator = (const fraction &b) {
numerator = b.numerator;
denominator = b.denominator;
this->reduction();
} fraction operator + (const fraction &b) const {
long long gcdnum = gcd(denominator, b.denominator);
return fraction(numerator*(b.denominator/gcdnum) + b.numerator*(denominator/gcdnum), denominator/gcdnum*b.denominator);
} fraction operator + (const int b) const {
return ((*this) + fraction(b));
} fraction operator - (const fraction &b) const {
return ((*this) + fraction(-b.numerator, b.denominator));
} fraction operator - (const int &b) const {
return ((*this) - fraction(b));
} fraction operator * (const fraction &b) const {
return fraction(numerator*b.numerator, denominator * b.denominator);
} fraction operator * (const int &b) const {
return ((*this) * fraction(b));
} fraction operator / (const fraction &b) const {
return ((*this) * fraction(b.denominator, b.numerator));
} void reduction() {
if (numerator == ) {
denominator = ;
return;
}
long long gcdnum = gcd(abs(numerator), denominator);
numerator /= gcdnum;
denominator /= gcdnum;
} public:
long long numerator;//分子
long long denominator;//分母
}; int countLen (long long n) {
int m = ;
while (n) {
n /= ;
m++;
}
return m;
} void printF (const fraction &f){
long long a, b, c;
int m, n;
b = f.numerator;
c = f.denominator;
if (c == (long long)) {
printf("%lld\n", b);
} else {
a = b / c;
m = countLen(a);
b -= a * c;
n = countLen(c);
for (int i = ; i <= m; i++) {
printf(" ");
}
printf("%lld\n%lld ", b, a);
for (int i = ; i < n; i++) {
printf("-");
}
puts("");
for (int i = ; i <= m; i++) {
printf(" ");
}
printf("%lld\n", c);
}
} int main() {
int n, maxn = ;
fraction f[maxn + ]; for (int i = ; i <= maxn; i++) {
f[i] = f[i - ] + fraction(, i);
} while (~scanf("%d", &n)) {
printF(f[n] * n);
} return ;
}
uva10288 Coupons 【概率 分数】的更多相关文章
- UVa10288 Coupons 分数模版
UVa10288 题目非常简单, 答案就是 n/n+n/(n-1)+...+n/1; 要求分数输出.套用分数模板.. #include <cstdio> #include <cstr ...
- UVA 10288 - Coupons(概率递推)
UVA 10288 - Coupons option=com_onlinejudge&Itemid=8&page=show_problem&category=482&p ...
- [POJ2625][UVA10288]Coupons
Description Coupons in cereal boxes are numbered 1 to n, and a set of one of each is required for a ...
- 「SHOI2002」「LuoguP1291」百事世界杯之旅(UVA10288 Coupons)(期望,输出
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- uva 10288 Coupons (分数模板)
https://vjudge.net/problem/UVA-10288 大街上到处在卖彩票,一元钱一张.购买撕开它上面的锡箔,你会看到一个漂亮的图案. 图案有n种,如果你收集到所有n(n≤33)种彩 ...
- ID3、C4.5、CART、RandomForest的原理
决策树意义: 分类决策树模型是表示基于特征对实例进行分类的树形结构.决策树可以转换为一个if_then规则的集合,也可以看作是定义在特征空间划分上的类的条件概率分布. 它着眼于从一组无次序.无规则的样 ...
- Logistic Regression vs Decision Trees vs SVM: Part II
This is the 2nd part of the series. Read the first part here: Logistic Regression Vs Decision Trees ...
- [ An Ac a Day ^_^ ] hdu 4565 数学推导+矩阵快速幂
从今天开始就有各站网络赛了 今天是ccpc全国赛的网络赛 希望一切顺利 可以去一次吉大 希望还能去一次大连 题意: 很明确是让你求Sn=[a+sqrt(b)^n]%m 思路: 一开始以为是水题 暴力了 ...
- 学习笔记TF052:卷积网络,神经网络发展,AlexNet的TensorFlow实现
卷积神经网络(convolutional neural network,CNN),权值共享(weight sharing)网络结构降低模型复杂度,减少权值数量,是语音分析.图像识别热点.无须人工特征提 ...
随机推荐
- CF1076E:Vasya and a Tree(DFS&差分)
Vasya has a tree consisting of n n vertices with root in vertex 1 1 . At first all vertices has 0 0 ...
- POI2014题解
POI2014题解 [BZOJ3521][Poi2014]Salad Bar 把p当作\(1\),把j当作\(-1\),然后做一遍前缀和. 一个合法区间\([l,r]\)要满足条件就需要满足所有前缀和 ...
- ASP.NET MVC3默认提供了11种ActionResult的实现
在System.Web.Mvc命名空间 ActionResult ContentResult EmptyResult FileResult HttpStatusCodeResult HttpNot ...
- 蚂蚁金服SOFAMesh在多语言上的实践
在用一项技术前,一定要知道它的优点和缺点,它的优点是否对你有足够的吸引力,它的缺点不足你是否有办法补上.黄挺在CNUTCon全球运维大会上的分享也很不错. 黄挺,蚂蚁金服高级技术专家,蚂蚁金服分布式架 ...
- CentOS7 RPM安装 rabbitmqDownloads on Bintray
下载 0依赖Erlang RPM for RabbitMQ包(https://github.com/rabbitmq/erlang-rpm) https://dl.bintray.com/rabbit ...
- oracle 表空间总结
表空间总结 一.认识表空间 1:表空间概念: 表空间是数据库中最大的逻辑单位,Oracle数据库采用表空间将相关的逻辑组件组合在一起,一个Oracle数 ...
- 编译sass,遇到报错error style.scss (Line 3: Invalid GBK character "\xE5")
今天学习sass,写了一行中文注释,结果却遇到了报错: cmd.exe /D /C call C:/Ruby23-x64/bin/scss.bat --no-cache --update style. ...
- Python将数据写入excel或者txt,读入csv格式或xls文件,写入csv(写一行空一行解决办法)
1.写入excel,一开始不需要自己新建一个excel,会自动生成 attribute_proba是我写入的对象 import xlwt myexcel = xlwt.Workbook() sheet ...
- Eclipse Android 代码自动提示功能 +导入 epf
1.设置 java 文件的代码提示功能 打 开 Eclipse 依次选择 Window > Preferences > Java > Editor - Content Assist ...
- 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #13 使用Block I/O控制器设置I/O优先级
HACK #13 使用Block I/O控制器设置I/O优先级 本节介绍使用Block I/O控制器的功能设置I/O优先级的方法.Block I/O控制器可以将任意进程分组,并对该分组设置I/O的优先 ...