2023年中国大学生程序设计竞赛女生专场题解, K. RSP

Dashboard - 2023年中国大学生程序设计竞赛女生专场 - Codeforces

                                        K. RSP

time limit per test1 second

memory limit per test512 megabytes

input standard input

output standard output

小 A 和小 B 在玩一种叫做石头剪刀布的游戏。

这个游戏的规则很复杂,每一轮游戏小 A 和小 B 都同时在石头、剪刀、布三种里面选择一种,然后石头可以打败剪刀,剪刀可以打败布,布可以打败石头,相同则为平局。

他们玩了一会儿之后就发现只有三种选择太无聊了,于是将游戏拓展成了每次从 n 种里选一个,类似的第 1 种可以打败第 2 种,... 第 n - 1 种可以打败第 n 种,第 n 种可以打败第 1 种,没有胜负关系的均为平局。

因为这个游戏运气成分太强,他们认为只靠一轮定胜负太不公平,于是约定每局游戏玩 m 轮,获胜次数多的获胜。

同时为了游戏更加有策略性,他们约定不能连续出相同的。

假设他们都是绝顶聪明的(会做出净胜期望尽可能大的选择),请你算一算这个游戏的获胜概率。

Input

输入的第一行包含两个整数 n , m (3 ≤ n ≤ 109, 1 ≤ m ≤ 109),表示每次可以选择的数量和一局游戏的轮数。

Output

输出一行 p "/"(不包含")q,表示有 

 的概率获胜,并且为最简分数(p, q 的最大公约数为 1)。

Examples

input

Copy

3 3

output

Copy

1/3

input

Copy

4 1

output

Copy

1/4

解析:

 关键:同时为了游戏更加有策略性,他们约定不能连续出相同的。

第一句游戏一定是靠运气定输赢的,数和赢的概率都是1/n

之后应为双方都决顶聪明,他们约定不能连续出相同的,所以他们可以选择上一局被对方克制的那个数,因为对方不可能再选能克制这个数得数了,因为上一把已经选过了。

所以答案就是第一局赢得概率:1/n

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<math.h>
#include<map>

using namespace std;
int n, m;

int main() {
	cin >> n >> m;
	cout << 1 << "/" << n << endl;
	return 0;
}

posted @ 2023-11-06 20:36  Landnig_on_Mars  阅读(41)  评论(0编辑  收藏  举报  来源