Problem:私人奶茶店
Description:
小C有一家奶茶店,其中有n种奶茶,每种奶茶都有a【i】个,小C每天都会等概率地从剩余的奶茶中选一杯奶茶喝掉,问小C第K天喝到第m种奶茶的概率是多少。
Input:
第一行n,代表奶茶的种类数
第二行n个数,表示a【i】
第三行k,m,表示第k天喝到第m种奶茶的概率
(n<=1e5, 0 < a[i] <= 1e6)
(1<=k<=sum(a[i]), 1<=m<=n)
Output:
用最简分数表示。
Sample Input:
2
1 1
1 1
Sample Output:
1/2
Language:C++
#include <iostream>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int n;
int a[N];
ll k;
int m;
ll GCD(ll x,int y)
{
if(!y) return x;
return GCD(y,x%y);
}
int main()
{
while(cin>>n)
{
ll sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
cin>>k>>m;
ll t=GCD(sum,a[m]);
cout<<a[m]/t<<'/'<<sum/t<<endl;
}
return 0;
}