1138 爱你一生一世

爱你一生一世

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_42987451/article/details/83116567