爱你一生一世
1、题目内容
Description
题目描述
在2013年1月4日,这个“爱你一生一世”的特别日子,男生都想向自己的喜欢的女生表达爱意。 你准备在该死的C语言考试后,去向她(或者他?)告白。告白怎么能缺了礼物了? 经过前期的情报收集,你了解到她喜欢的一些礼物,但是可能因为消息的不准确,其中有些 礼物并不是她喜欢。为了保险,你准备从其中挑选两件不同的礼物,请问至少有一件礼物她 会喜欢的概率。
输入
第一行是一个整数K,表示样例的个数。 以后每行两个整数N(2≤N≤10,000),表示礼物的个数和M(0 ≤ M ≤ N),表示不喜欢的礼物个数。
输出
输出每个样例的结果,如果概率是0或者1,输出0,1,其他情况输出分数形式a/b,保证a和b互质。
样例输入
3
4 0
4 2
4 4
样例输出
1
5/6
0
2、题目分析
在做概率题的时候,基本就是这样的思路:结果只有三种能性,1、0、分数。结果是分数的时候我们需要求最大公约数对分子分母进行化简。把思路理解好基本问题不大,就怕少思考了一些情况。
3、参考代码
#include<stdio.h>
int Divisor(int x,int y) // 求最大公约数
{
if(y==0) return x;
else return Divisor(y,x%y);
}
int main()
{
int k,m,n;
scanf("%d",&k);
while(k--)
{
int x,y;
scanf("%d %d",&n,&m);
if(m==0||m==1) //如果不喜欢的礼物只有1件或者没有,那么概率为1
{
printf("1\n");
}
else if(n==m) //如果礼物都是不喜欢的,毫无疑问概率为0
{
printf("0\n");
}
else //结果为分数的情况
{
int x=(n-m)*(m+n-1); //分子
int y=n*(n-1); //分母
printf("%d/%d\n",x/Divisor(x,y),y/Divisor(x,y));
}
}
return 0;
}