题目大意:
有N个人,K张票,小S的编号是id,求解小S有多少概率能拿到一张电影票
Input
第一行包括三个正整数,N,K,Id(1<=K<=N<=10^9,1<=ID<=N )
Output
一行一个最简分数,表示小S可以看到电影的概率。
(如果概率为1或0,请输出1/1或0/1)
Sample Input
2 1 2
Sample Output
1/2
【样例解释】
一共两个人,筛选经过1轮,第1轮每个人被踢出的概率都是等概率的,所以答案是1/2。
Data Constraint
水题一道,这题就算想不出正解,但打标都有50分(具体看数据范围)下面来说正解:
找规律,不管小S在哪个位置,拿到电影票的机会都是k/n,再用辗转相除法求解就行了。
#include <iostream>
using namespace std;
int yf (int a,int b)
{
if (a==0)
return 0;
int t;
while (a%b!=0)
{
int t=a%b;
a=b;
b=t;
}
return b;
}
int main()
{
int n,k,id;
cin>>n>>k>>id;
if (k==0)
{
cout<<"0/1";
return 0;
}
int mod=yf(k,n);
cout<<k/mod<<"/"<<n/mod;
}