题目链接:

https://cn.vjudge.net/problem/UVA-10288

题目大意:

一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最简的分数形式表示答案。n<=33。

解题思路:

假设现在已刮到k个图案了,刮到新图案的概率是(n-k)/n,即若要再收集一个新图案平均要刮s=n/(n-k)次。所以只需要穷举k=1 to n,累加s的和就行了。注意式子可以将分子n提取出来。

先附上分数类模板

 struct Fraction//分数类
{
ll num, den;//num为分子,den为分母
Fraction(ll num = , ll den = )
{
if(den < )
{
num = -num;
den = -den;
}
assert(den != );//den=0程序终止
ll g = __gcd(abs(num), den);
this->num = num / g;
this->den = den / g;
}
Fraction operator + (const Fraction& o)const
{
return Fraction(num * o.den + den * o.num, den * o.den);
}
Fraction operator - (const Fraction& o)const
{
return Fraction(num * o.den - den * o.num, den * o.den);
}
Fraction operator * (const Fraction& o)const
{
return Fraction(num * o.num, den * o.den);
}
Fraction operator / (const Fraction& o)const
{
return Fraction(num * o.den, den * o.num);
}
bool operator < (const Fraction& o)const
{
return num * o.den < den * o.num;
}
bool operator == (const Fraction& o)const
{
return num * o.den == den * o.num;
}
};

注意输出格式(很伤)

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Fraction//分数类
{
ll num, den;//num为分子,den为分母
Fraction(ll num = , ll den = )
{
if(den < )
{
num = -num;
den = -den;
}
assert(den != );//den=0程序终止
ll g = __gcd(abs(num), den);
this->num = num / g;
this->den = den / g;
}
Fraction operator + (const Fraction& o)const
{
return Fraction(num * o.den + den * o.num, den * o.den);
}
Fraction operator - (const Fraction& o)const
{
return Fraction(num * o.den - den * o.num, den * o.den);
}
Fraction operator * (const Fraction& o)const
{
return Fraction(num * o.num, den * o.den);
}
Fraction operator / (const Fraction& o)const
{
return Fraction(num * o.den, den * o.num);
}
bool operator < (const Fraction& o)const
{
return num * o.den < den * o.num;
}
bool operator == (const Fraction& o)const
{
return num * o.den == den * o.num;
}
};
int main()
{
ll n, k, ans, cases = ;
while(cin >> n)
{
Fraction ans;
for(int i = ; i <= n; i++)
{
ans = ans + Fraction(n, i);
}
ll t = ans.num / ans.den;
ans.num -= t * ans.den;
if(ans.num == )
{
cout<<t<<endl;
}
else
{
string s;
stringstream ss, ss1;
ss << t;
ss >> s;
int kongge = s.size();
for(int i = ; i <= kongge; i++)cout<<" ";
cout<<ans.num<<"\n"; ss1 << ans.den;
ss1 >> s;
int duanxian = s.size();
cout<<t<<" ";
for(int i = ; i < duanxian; i++)cout<<"-";
cout<<"\n";
for(int i = ; i <= kongge; i++)cout<<" ";
cout<<ans.den<<"\n";
}
}
return ;
}

UVA 10288 Coupons---概率 && 分数类模板的更多相关文章

  1. UVA 10288 - Coupons(概率递推)

    UVA 10288 - Coupons option=com_onlinejudge&Itemid=8&page=show_problem&category=482&p ...

  2. uva 10288 Coupons (分数模板)

    https://vjudge.net/problem/UVA-10288 大街上到处在卖彩票,一元钱一张.购买撕开它上面的锡箔,你会看到一个漂亮的图案. 图案有n种,如果你收集到所有n(n≤33)种彩 ...

  3. 连分数(分数类模板) uva6875

    //连分数(分数类模板) uva6875 // 题意:告诉你连分数的定义.求连分数,并逆向表示出来 // 思路:直接上分数类模板.要注意ai可以小于0 #include <iostream> ...

  4. UVA 10288 Coupons (概率)

    题意:有n种纸片无限张,随机抽取,问平均情况下抽多少张可以保证抽中所有类型的纸片 题解:假设自己手上有k张,抽中已经抽过的概率为 s=k/n:那抽中下一张没被抽过的纸片概率为 (再抽一张中,两张中,三 ...

  5. Uva 10288 Coupons

    Description Coupons in cereal boxes are numbered \(1\) to \(n\), and a set of one of each is require ...

  6. UVa 10288 - Coupons(数学期望 + 递推)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. UVA 10288 Coupons 彩票 (数学期望)

    题意:一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最简的分数形式表示答案.n<=33. 思路:这题实在好人,n<=33.用longlong ...

  8. uva10288 Coupons 【概率 分数】

    题目: 题意: 一共n种不同的礼券,每次得到每种礼券的概率相同.求期望多少次可以得到所有n种礼券.结果以带分数形式输出.1<= n <=33. 思路: 假设当前已经得到k种,获得新的一种的 ...

  9. C++STL - 类模板

    类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板   1.定义 template<typename 类型形参1, typename 类型形参2,...&g ...

随机推荐

  1. XMPP之openfire无法启动

    之前半个月自学ios的时候自己也配置过xmpp框架,也从github上下载了demo试了下,也是很完美运行的,最近想着再回头把XMPP框架系统的学习一下 ,毕竟当时学的时候还是在虚拟机中,卡死了.我这 ...

  2. [转]Http请求中Content-Type讲解以及在Spring MVC中的应用

    本文转自:http://blog.csdn.net/blueheart20/article/details/45174399 引言: 在Http请求中,我们每天都在使用Content-type来指定不 ...

  3. 如鹏网学习笔记(十五)ASP.NET MVC核心基础笔记

    一.ASP.Net MVC简介 1,什么是ASP.NET MVC? HttpHandler是ASP.net的底层机制,如果直接使用HttpHandler进行开发难度比较大.工作量大.因此提供了ASP. ...

  4. SqlServer常用语句

    首先,写这个的原因是我其实sql语句不太行,总觉得自己写得很乱,好像也没有系统学习过,借此复习和与大家探讨 No.1 关于查询时间区间是否重叠的sql语句 问题是这样:插入之前,想查询同User是否其 ...

  5. sublime下package control安装无效解决

    使用快捷键:ctrl+`打开控制台执行如下命令 sublime2: import urllib2,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' ...

  6. C#获取Url不同路径的方法大全

    在 C# 中,用 Request 对象来获取 Url  的各种路径,包括上一页 Url.域名.绝对路径.相对路径和物理路径.虽然在某些情况下,无法获取到 Url,但可以获取到大部分情况下的 Url,下 ...

  7. 【转载】2012年七个免费ASP空间分享-支持ASP、ASP.NET的空间

    文章目录 Azure空间 Appharbor 7host空间 Brinkster Jabry空间 总结后的话 这篇免费ASP空间的总结文章本来标题已经拟好了是:2012年十大免费ASP空间分享,但是当 ...

  8. groovy实现循环、交换变量、多赋值、?.运算符

    /** * Created by Jxy on 2019/1/3 10:01 * 1.实现循环的方式 * 2.安全导航操作符---?. * 3.一次性赋值给多个变量 */ 0.upto(2){ pri ...

  9. css的高级选择器,后代选择器,子代选择器,并集选择器,交集选择器

    高级选择器: 后代选择器 子代选择器 并集选择器 交集选择器 一.后代选择器: 使用空格表示后代选择器,父元素的后代(包括儿子,孙子,从孙子) 也就是说,box类下的所有span标签 字体颜色都被设置 ...

  10. OI中的一些模板

    线性筛 #include"cstdio" #include"cstring" #include"iostream" #include&quo ...