CF452C 题解

洛谷链接&CF 链接

1|0题目简述

m×n 张牌,有 n 个种类,每个种类有 m 张,现在抽一张放回,再抽一张,求这张牌与第一张抽出的牌种类相同的概率。

2|0思路

本题是一道结论题,我们来推一下公式。

首先需要特判一个点:只有 1 张牌,即 n=m=1,那么两次抽都会是这张牌,所以概率为 1,输出 1 即可

接着分类模拟:

  1. 两次抽到的牌是同一张牌,则这种情况的概率为 1n

  2. 两次抽到的牌种类相同,但不是同一张的概率为 n1n,那么去除第一次抽的牌,第二张牌与第一张种类相同的概率为 m1n×m1

因两种情况互不相干,故最终的概率为 1n+n1n×m1n×m1

下面是代码参考

#include<iostream> using namespace std; double n, m; // 建议直接用 double int main() { cin >> n >> m; if(m == 1 && n == 1) return printf("1\n"), 0; // 特判概率为 1 的情况。 printf("%.12lf\n", (n - 1) / n * (m - 1) / (m * n - 1) + 1.0 / n); // 推的公式 return 0; }

提交记录

The End!


__EOF__

本文作者So_noSlack
本文链接https://www.cnblogs.com/So-noSlack/p/17626160.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   So_noSlack  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示