UVA 10288 Coupons---概率 && 分数类模板
题目链接:
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---概率 && 分数类模板的更多相关文章
- UVA 10288 - Coupons(概率递推)
UVA 10288 - Coupons option=com_onlinejudge&Itemid=8&page=show_problem&category=482&p ...
- uva 10288 Coupons (分数模板)
https://vjudge.net/problem/UVA-10288 大街上到处在卖彩票,一元钱一张.购买撕开它上面的锡箔,你会看到一个漂亮的图案. 图案有n种,如果你收集到所有n(n≤33)种彩 ...
- 连分数(分数类模板) uva6875
//连分数(分数类模板) uva6875 // 题意:告诉你连分数的定义.求连分数,并逆向表示出来 // 思路:直接上分数类模板.要注意ai可以小于0 #include <iostream> ...
- UVA 10288 Coupons (概率)
题意:有n种纸片无限张,随机抽取,问平均情况下抽多少张可以保证抽中所有类型的纸片 题解:假设自己手上有k张,抽中已经抽过的概率为 s=k/n:那抽中下一张没被抽过的纸片概率为 (再抽一张中,两张中,三 ...
- Uva 10288 Coupons
Description Coupons in cereal boxes are numbered \(1\) to \(n\), and a set of one of each is require ...
- UVa 10288 - Coupons(数学期望 + 递推)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 10288 Coupons 彩票 (数学期望)
题意:一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最简的分数形式表示答案.n<=33. 思路:这题实在好人,n<=33.用longlong ...
- uva10288 Coupons 【概率 分数】
题目: 题意: 一共n种不同的礼券,每次得到每种礼券的概率相同.求期望多少次可以得到所有n种礼券.结果以带分数形式输出.1<= n <=33. 思路: 假设当前已经得到k种,获得新的一种的 ...
- C++STL - 类模板
类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板 1.定义 template<typename 类型形参1, typename 类型形参2,...&g ...
随机推荐
- mklink /d 目录符号链接
刚装好Windows Live Writer,却发现日志保存路径是默认的改都没法改,在C:\Users\用户名\Documents\My Weblog Posts下. 找了下,竟然可以用cmd的mkl ...
- 可变参数的lambda表达式
delegate int mydelegate(params int[] a); class Program { static void Main(string[] args) { //接收可变参数的 ...
- wpf 窗口最小化后,触发某事件弹出最小化窗口并置顶
//如果窗口最小化了弹出并置顶----事件触发调用 ShowWindowAsync(new System.Windows.Interop.WindowInteropHelper(CommonHelpe ...
- Cheatsheet: 2017 07.01 ~ 07.31
Other 8 Key Application Performance Metrics & How to Measure Them The Code Review: The Most Impo ...
- Asp.Net 之Jquery知识点运用
1.先把要用的body内的代码写好. <div id="ulBox"> <h3>下面的Ulid为"ulList1"</h3> ...
- 四、spark集群架构
spark集群架构官方文档:http://spark.apache.org/docs/latest/cluster-overview.html 集群架构 我们先看这张图 这张图把spark架构拆分成了 ...
- Git基础--笔记
0.取的项目的git仓库 有两种取得 Git 项目仓库的方法.第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库. 第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来 1.在工作目录 ...
- log4php使用及配置
log4php使用及配置 1.在项目中加入log4php包 2.log4php配置 在项目配置包中添加logger_config.xml配置文件: logger_config.xml配置文件添加代码如 ...
- Node.js+websocket+mongodb实现即时聊天室
ChatRoom Node.js+websocket+mongodb实现即时聊天室 A,nodejs简介:Node.js是一个可以让javascript运行在服务器端的平台,它可以让javascrip ...
- 如何在iview组件中使用jsx
最近选用的框架iview表单组件的render写法让人有点不习惯,尤其是在写比较复杂的逻辑的时候,还是感觉模板式的写法比较方便且可读性较强.而render函数除了支持配置写法外,还支持jsx的写法.由 ...