看电影

看电影

1s/256MB

问题描述

听说 NOIP2016 大家都考得不错,于是 CCF奖励省常中了 K张变形金刚 5 的电影票奖励OI队的同学去看电影。可是省常中 OI队的同学们共有 N(N ≥ K)人。于是机智的你想到了一个公平公正的方法决定哪 K 人去看电影。

N 个人排成一圈,按顺时针顺序标号为1 - N,每次随机一个还存活的人的编号,将这个人踢出。继续上述操作,直到剩下 K 个人。

但这样显然太无聊了,于是小 S 又想出一个牛逼的方法。

N 个人排成一圈,按顺时针顺序标号为 1 - N,每次随机一个 1 - N的编号,假设随机到的编号是 X,如果编号为 X 人还未踢出,则将这个人踢出,否则看编号为 X % N + 1(即顺时针顺序下一个编号)的人是否存活,如果还未踢出则将他踢出,否则继续看编号(X + 1)% N + 1的人,如果已被踢出看顺时针的下一个…………,以此类推,直到踢出一个人为止。重复上述操作,直到剩下 K 个人。

已知小 S 的编号是 Id,问按照小 S 的方法来他有多少的概率可以不被踢出,成功得到看电影的机会。

输入格式

第一行包括三个正整数,N,K,Id(1≤ K ≤ N ≤ 109, 1 ≤ Id ≤ N )

输出格式

一行一个最简分数,表示小 S 可以看到电影的概率。

(如果概率为 1 或 0,请输出 1/1 或 0/1)

输入样例

2 1 2

输出样例

1/2

样例解释

一共两个人,筛选经过 1 轮,第1 轮每个人被踢出的概率都是等概率的,所以答案是

1/2。

数据规模

所有测试数据范围和特点如下

 

测试点编号

N

特别约定

1

 

≤ 2

 

保证这两个数据的 K 互不相同

2

3

 

≤ 3

 

4

K = 1

5

≤ 5

 

6

≤ 15

K=N

7

≤ 60

K=0

8

≤ 250

 

9

 

≤ 109

Id=1

10

 

题解:这题虽然看起来比较麻烦,但仔细一想可以发现每个人的概率是相等的,所以答案就是K/N,求gcd约分即可。

Code:

var
  n,k,d,p:longint;
function gcd(a,b:longint):longint;
begin
  if b=0 then exit(a);
  gcd:=gcd(b,a mod b);
end;
begin
  assign(input,'movie.in');reset(input);
  assign(output,'movie.out');rewrite(output);
  readln(n,k,d);
  p:=gcd(n,k);
  writeln(k div p,'/',n div p);
  close(input);close(output);
end.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackflyDC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值