[Offer收割]编程练习赛21 register

Ended

Participants:295

Verdict:Accepted
Score:100 / 100
Submitted:2017-08-06 12:45:14

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;
const int mod=1000000007;
long long fac[100050],inv[100050],f[100050];
long long C(int n,int m)
{
    if(m>n)
        return 0;
    else
        return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
int a[100050];
int main()
{
//    freopen("1.txt","r",stdin);
    fac[0]=inv[0]=f[0]=1;
    fac[1]=inv[1]=f[1]=1;
    for(int i=2;i<100005;i++)
    {
        f[i]=(-mod/i)*f[mod%i]%mod;
        if(f[i]<0)f[i]+=mod;
        inv[i]=inv[i-1]*f[i]%mod;
        fac[i]=fac[i-1]*i%mod;
    }
    int t;scanf("%d",&t);
    while(t--)
    {
        int n,k;
        scanf("%d%d",&n,&k);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX