AT_joi2006yo_e.JOI 2006 予選 問題5

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

设想一个游戏场景:有 kk 组卡片,每组有 nn 张卡片,分别标有从 11 到 nn 的数字。在开始游戏前,我们会将这 knkn 张卡片进行充分洗牌,然后将它们分成 nn 堆,每堆 kk 张卡片,并从左至右依次排列。我们称第 ii 堆卡片为「山 ii」。

游戏以山 11 开始,每次从当前山顶抽取一张卡片(抽取后不放回原处)。如果抽出的卡片上标有数字 ii,那么下一步则转至山 ii,继续抽取此山顶的一张卡片。这个过程持续进行,直到所有的山都被抽空,就宣告成功。而如果在某一时刻应该抽取的山已无卡片可抽时,就意味着失败。

如果游戏中途失败,你可以选择直接结束游戏,或是保留剩下的卡片以当前的装态重新开始并尝试继续游戏。重新开始时,从最左边仍有卡片的山顶开始抽取,规则与之前相同。游戏过程最多允许重新开始 mm 次,其中 mm 可以是 00 或 11。也就是说,你可以不重新开始或只重新开始一次。不同的初始卡片排列会影响游戏结果,可能不重新开始就成功,也可能需要重新开始才成功,当然也可能在重新开始后依旧失败。由于洗牌充分,每种初始排列出现的概率相同。我们的目标是在最多 mm 次重新开始内成功完成游戏的概率 pp,要求输出 pp 的小数表示,保留小数点后 rr 位。

输出时应注意,如果有一个整数 KK 使得 p×10Kp \times 10^K 为整数,则小数部分即使全为零也请完整输出。例如,若 p=3/8=0.375p = 3/8 = 0.375,当 r=5r = 5 时,输出 0.37500;当 r=2r = 2 时,输出 0.37。对于 p=1.0p = 1.0 的情况,若 r=3r = 3,则输出 1.000。虽然 0.150000⋯0.150000\cdots 可以表示为循环小数 0.1499999⋯0.1499999\cdots,但在这种情况下请采用前者的表示形式。

输入格式

输入包含一行,四个整数 n,k,m,rn, k, m, r,分别表示卡片种类数、每种卡片的数量、最多重新开始的次数和输出的小数位数。

输出格式

输出在 mm 次以内成功完成游戏的概率 pp,以小数形式表示并保留小数点后 rr 位。

输入输出样例

  • 输入#1

    2 1 0 5

    输出#1

    0.50000
  • 输入#2

    3 1 1 3

    输出#2

    0.833
  • 输入#3

    2 2 1 3

    输出#3

    1.000

说明/提示

1≤n≤10 0001 \leq n \leq 10\,000,1≤k≦1001 \leq k \leqq 100,m=0m = 0 或 m=1m = 1,1≤r≤10 0001 \leq r \leq 10\,000。

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页