/*
钓鱼概率问题:
又到了万物复苏的春天!活蹦乱跳的大鱼在沁湖各展风姿,GDUFE 的渔夫全都迫不及待地来钓鱼了,
Baby O 也是其中之一。
其中,沁湖里有 n条鱼,来参加比赛的渔夫(包括Baby O自己)一共有 m 个,
每条鱼被钓到的可能性相同。
Baby O是一个贪心的人,他想要把沁湖所有的鱼全部独吞,但是他不知道自己有多大把握能全部钓上来,
现在需要你求这个概率。
输入
共一行。
第一行输入两个数字 n,m(1≤n,m≤5),分别代表鱼的数量和渔夫的数量。
输出
共一行。
以最简分数的形式(形如 1/2,2/3,1/1) 输出答案。
样例
输入
2 2
输出
1/4
输入
1 2
输出
1/2
*/
//分析: 每条鱼被Baby o抓到的概率为 1/m Baby o 抓到所有鱼的概率为(1/m)^n
思路:
概率计算:
- 由于每个渔夫(包括 Baby O)钓到每条鱼的概率是均等的,所以每条鱼被 Baby O 钓到的概率是 1/m。
- Baby O 想要钓到所有的鱼,那么每条鱼都必须被 Baby O 钓到。对于每条鱼,这个事件是独立的,因此总的概率是这些概率的乘积。
总的概率公式:
- 假设有 n 条鱼,m 个渔夫,那么 Baby O 钓到所有 n 条鱼的概率是 =(1/m)^n。
最简分数:
- 要以最简分数形式输出结果,需要计算分子的 mnm^nmn 次方,并将其作为分子,分母为 1,然后进行约分。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n, m, i, j = 1;
scanf("%d %d", &n, &m);
if (n <= 0 || n > 5 || n <= 0 || m > 5) {//题目要求1<=n,m<=5
exit(0);
}
for (i = 0; i <= n; i++) {
j* m;
}
printf("1/%d", j);
return 0;
}
#include<stdio.h>
// 计算最大公约数 分母和分子约分
int gcd(int a, int b) { //以 8,4举例子
while (b != 0) {// 4 8
int temp = b;//8 4
b = a % b;// 4 0
a = temp;//8 4
}
return a;//4
}
int main()
{
int n, m;
scanf("%d %d", &n, &m);
int numberator = 1;
int denominator = 1;
//分母是m的n次方
for (int i = 0; i < n; i++) {
denominator *= m;
}
//计算分子和分母的最大公约数
int divisor = gcd(numberator, denominator);
// 用最大公约数约分
numberator /= divisor;
denominator /= divisor;
//输出最简分数
printf("%d/%d", numberator, denominator);
return 0;
}