您的位置:首页 > 运维架构

UVA 12576 Simply Loopy

2015-11-29 10:52 176 查看
一道有意思的组合数学

由于五个变量等价,只需考虑 i2i^2 的贡献

固定 i ,其它数的和为 n - i ,由隔板法得剩下4个数的取值有C3n−i−1C_{n-i-1}^3种方案

于是i2的贡献=∑i=1n−4i2×C3n−i−1于是i^2的贡献=\sum_{i=1}^{n-4} i^2 \times C_{n-i-1}^3

乘5得最终答案,注意数据范围,会爆int

#include <cstdio>
typedef long long ll;
const int mod = 7477777;

ll C(ll n) {return n * (n - 1) * (n - 2) / 6;}

int main()
{
int T;
scanf("%d", &T);

for(int ca = 1; ca <= T; ca++)
{
int n;
scanf("%d", &n);
ll ans = 0;
for(int i = 1; i <= n - 4; i++)
ans = (ans + C(n - i - 1) % mod * i * i) % mod;
printf("Case %d: %lld\n", ca, 5 * ans % mod);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: