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 ...
 
随机推荐
- 把IP字符串转换为IPv4标准格式
			
把IP字符串转换为IPv4标准格式,如一个IP为127.0.0.1转为127.000.000.001格式? 即是说“点”分隔的数据不够三位数字长度,转换为三位数字长度. Insus.NET有尝试写了一 ...
 - Swift函数_默认参数
			
swift中提供了默认参数功能,在声明函数时给参数指定默认值. 例: func inputStudentInfo(name:String,age:Int="26") { print ...
 - Linux NTP时间服务器
			
NTP 时间服务器 ntp也是一种协议 ntp软件(支持ntp协议) CentOS6自带 CentOS7需要安装 chrony软件(支持ntp协议) CentOS7自带 安装ntp CentOS ...
 - Spring 学习(四)--- AOP
			
问题 : AOP 解决的问题是什么 Spring AOP 的底层实现是什么 Spring AOP 和 AspectJ 的区别是什么 概述 在软件业,AOP为Aspect Oriented Progra ...
 - UML 简介笔记
			
1. UML 是什么? UML 统一建模语言是一组图形表示法,可以帮助描述和设计软件系统,特别是使用面向对象 OO 风格建造的软件系统. 2. 使用 UML 的方式 UML 有 3 种使用模式:草稿, ...
 - 创建Web项目运行时出小错误及解决方法
			
1.目录结构 2.各文件内容 index.jsp <%@ page contentType="text/html;charset=UTF-8" language=" ...
 - Dubbo(二)  一次惨痛的流血事故
			
时间定位到2018年11月某某一天,我正在看看Spring源码的文档,趁着没啥事,忽然想起Dubbo是基于Schema扩展的,所以就翻了下Dubbo的源码. 然后的然后,有活要干了,写完代码后,启动工 ...
 - Java:反射与代理
			
Java世界的繁荣反射这一特性有很大功劳,可以获取全面的类型信息. /** * */ package ref; import java.lang.reflect.Field; import java. ...
 - Oracle数据库RowId
			
RowId是什么? RowId是根据每一行数据的物理信息地址编码而成的一个位列,利用RowId可以快速定位到某一行. Oracle数据库编辑数据必须查出RowId,可以根据如下语句查询: select ...
 - PHP获取本地时间
			
使用date ( "Y-m-d H:i:s" )函数获取当前时间,总是不对,原来默认是格林威治时间,解决的办法有两个: 1.获取之前先加 date_default_timezo ...