题目描述
小明非常喜欢做a+b的练习,他不清楚自己是否做对了,所以想找小文帮他看一下。 但是小文不喜欢做a+b,所以他只是随意地抽了3题来看一下。 假设小明做了n道,对了m道,那么抽的这三道题都对的概率是多少?
输入
第一行是一个整数K,表示样例的个数。 每个样例占一行,为两个整数n和m,0≤m≤n≤1,000 且3≤n。
输出
每行输出一个样例的结果,如果概率是1或者0,输出1或0。否则输出a/b的分数形式,a和b互质。
样例输入
3 3 0 3 3 4 3
样例输出
0 1 1/4
小明做了n道,对了m道,那么抽的这三道题都对的概率为C(3,m)/C(3,n)。
因为输出的要是分数形式且分子分母互质,所以要求分子分母的最大公因数,再有分子分母同除以最大公因数,然后以分数形式分别输出即可。
#include <stdio.h>
int c(int a)//求C(3,a)
{
int b;
b = a*(a-1)*(a-2)/6;
return b;
}
int down(int x,int y)//求最大公因数
{
int z = 1;
if(x<y)//如果x小于y,要将其互换
{
x = x + y;
y = x - y;
x = x - y;
}
while(z!=0)
{
z = x % y;
x = y;
y = z;
}
return x;
}
int main()
{
int k,m,n;
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&m,&n);
if(m==n)
printf("1\n");
else if(n<3)
printf("0\n");
else
printf("%d/%d\n",c(n)/down(c(m),c(n)),c(m)/down(c(m),c(n)));
}
return 0;
}