列表

详情


NC236236. 分蛋糕

描述

有一块蛋糕,要分给 m 个小朋友。蛋糕上随机放置了n块草莓,小红要将蛋糕竖直切成 m 个相同的块分给小朋友们(等价于把一个圆 m 等分)。因为小红特别喜欢草莓,所以她会使用最好的切法使得尽量多的草莓被分到同一块上,求小红能够将所有的草莓都分到同一块上的概率

输入描述

输入仅一行,包含两个正整数  ,表示草莓个数和小朋友数。

输出描述

输出一个最简分数,表示这 n 颗草莓被同一个小朋友得到的概率。

示例1

输入:

3 3

输出:

1/3

示例2

输入:

3 4

输出:

4/27

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 432K, 提交时间: 2023-07-29 22:40:54

#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;

void print(ll x)
{
    if(x>9) print(x/10);
    putchar(x%10+'0');
}

int main() {
	std::ios::sync_with_stdio(false);
	cin.tie(nullptr); cout.tie(nullptr);

	int n, m;
	cin >> n >> m;

	ll up = m, down = 1;
	for (int i = 1; i < m; i++) {
		down *= n;
	}

	ll d = __gcd(up, down);
	up /= d;
	down /= d;

	print(up);
    putchar('/');
    print(down);

	return 0;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 436K, 提交时间: 2023-07-28 14:43:40

#include<bits/stdc++.h>
using namespace std;
#define ll __int128

void print(ll x)
{
	if(x<0) putchar('-'),x=-x;
	if(x/10) print(x/10);
	putchar(x%10+'0');
}

int main()
{
	int n,m;
	cin>>n>>m;
	ll x=m,y=1;
	for(int i=1;i<m;i++){
		y*=n;
	}
	ll z=__gcd(x,y);
	print(x/z);
	cout<<"/";
	print(y/z);
	return 0;
}

上一题