题目链接: [齐神与心美的游戏II]
大致题意:
给出n和k,从n张牌中抽三张,每张牌有一个数字,一张牌可以重复抽,三张牌上的数字加和,问和是k的概率
解题思路:
n张牌,每张牌有三种机会,所以总的可能是n3,然后三重循环暴力跑,找和是k的可能,最后gcd。
AC代码:
#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/%d\n", q / tmp, p / tmp);
}
else printf("0/1\n");
}
return 0;
}