hiho week 238 register

Ended

Participants:93

Verdict:Accepted
Score:100 / 100
Submitted:2019-01-21 23:50:04

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
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
const int maxn=300010;
const int Mod=1e9+7;
ll rev[maxn],fac[maxn],n,m,ans;
void prepare()
{
    fac[0]=1; rev[1]=1;
    for(int i=1;i<=n*m;i++){
       fac[i]=fac[i-1]*i%Mod;
    }
    for(int i=2;i<=n*m;i++) rev[i]=(Mod-Mod/i)*rev[Mod%i]%Mod;
}
int main()
{    
    scanf("%lld%lld",&n,&m);
    prepare();
    ans=fac[n*m];
    for(int i=1;i<=n;i++) 
      for(int j=1;j<=m;j++){
         ans=ans*rev[i+j-1]%Mod;    
    }
    printf("%lld\n",ans);
    return 0;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX