题目描述
Ans = 0;
For(inti = 1; i <= n; i++)
For(int v = 0; v <= n; v++)
Ans = (Ans + C(i, v) * C(i, v)) % 998244353;
C(i,v)为组合数第i行第v列的数。
给你上面的代码中的n,请你输出Ans的值。
输入描述:
输入一个整数n
输出描述:
输出Ans的值。
示例1
输入
复制
3
输出
复制
28
备注:
n<=106
思路:
这个题是所有组合数的平方和是概率课本上的一道公式。
直接用鲁卡斯定理求就行。
代码:
#include <bits/stdc++.h>
using namespace std;
const long long mod=998244353;
const int maxn=2000010;
long long F[maxn];
void init(long long p)
{
F[0] = 1;
for(int i = 1;i <= p;i++)
F[i] = F[i-1]*i%mod;
}
long long inv(long long a,long long m)
{
if(a == 1)return 1;
return inv(m%a,m)*(m-m/a)%m;
}
long long Lucas(long long n,long long m,long long p)
{