题目链接:

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. android FrameLayout

    FrameLayout:帧布局,可以显示图片的动画效果 前景图像: 永远处于帧布局最顶的,直接面对用户的图像,,就是不会被覆盖的图片 常用属性: android:foreground:设置该帧布局容器 ...

  2. 微信小程序二维码识别

    目前市场上二维码识别的软件或者网站越来越多,可是真正方便,无广告的却少之很少. 于是,自己突发奇想做了一个微信二维码识别的小程序. 包含功能: 1.识别二维码 ①普通二维码 ②条形码 ③只是复制解析出 ...

  3. Hadoop worldcount

    以前的公司和现在的公司,都用到了hadoop和hdfs.一直没入门,今天照着官网写了一个hadoop worldcount demo 1. hadoop是一个框架,什么是框架,spring是一个框架. ...

  4. HDU 4747(AC不能)

    http://acm.hdu.edu.cn/showproblem.php?pid=4747

  5. uva 725 DIVISION (暴力枚举)

    我的56MS #include <cstdio> #include <iostream> #include <string> #include <cstrin ...

  6. lambda 表达式学习笔记

    在Java中传递一个代码段并不容易,不能直接传递代码段.Java是一个面向对象语言,所以必须构造一个对象,这个对象的类需要一个方法能包含所需的代码.lambda的出现有效的解决这个问题,让代码变得更加 ...

  7. 远景GIS云产品规划

    远景GIS云平台在初期有过产品设计,随着研发工作的进行以及对GIS云的认知更进行一步,最近重新梳理了平台的产品规划,使以后的开发不至于走偏方向. GIS云平台的研发也是摸着石头过河,免不了有考虑不到的 ...

  8. 相比之前其他几个入门的, 推荐: 简单vue2 入门教程

    注意:Vue.js 不支持 IE8 及其以下 IE 版本.       具体可以看下  http://www.runoob.com/vue2/vue-tutorial.html 以下是学习过程 Vue ...

  9. Codeforces Round #417 B. Sagheer, the Hausmeister

    B. Sagheer, the Hausmeister time limit per test  1 second memory limit per test  256 megabytes   Som ...

  10. Week3——Session

    Session 一.Session是会话技术的一种.会话技术分为Cookie和Session.Cookie是数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie: S ...