给出n和k,从n张牌中抽三张,每张牌有一个数字,一张牌可以重复抽,三张牌上的数字加和,问和是k的概率
n张牌,每张牌有三种机会,所以总的可能是n3,然后三重循环暴力跑,找和是k的可能,最后gcd。
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int a[200];
int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);
}
int main(void)
{int n, k;while (cin >> n >> k) {for (int i=0; i < n; ++i)scanf("%d", &a[i]);int p = n * n * n, q=0;for (int i = 0; i < n; ++i)for (int j = 0; j < n; ++j)for (int m = 0; m < n; ++m)if (a[i] + a[j] + a[m] == k)q++;if (p != 0) {int tmp = gcd(p, q);printf("%d/%dn", q / tmp, p / tmp);}else printf("0/1n");}return 0;
}
本文发布于:2024-02-02 21:53:39,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170688201746682.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |