結果
| 問題 | 
                            No.1044 正直者大学
                             | 
                    
| コンテスト | |
| ユーザー | 
                             cureskol
                         | 
                    
| 提出日時 | 2019-11-30 20:28:51 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 762 ms / 2,000 ms | 
| コード長 | 1,096 bytes | 
| コンパイル時間 | 1,682 ms | 
| コンパイル使用メモリ | 170,040 KB | 
| 実行使用メモリ | 81,536 KB | 
| 最終ジャッジ日時 | 2024-11-23 05:37:10 | 
| 合計ジャッジ時間 | 25,625 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 28 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD=1e9+7;
int pw(int n,int k){
  if(k<0)return pw(n,k+MOD-1);
  int res=1;
  while(k){
    if(k&1)res*=n;res%=MOD;
    n*=n;n%=MOD;
    k>>=1;
  }
  return res;
}
std::vector<int> Factorial(5e6),Finverse(5e6);
inline void Cinit(){// limit is 5e6 /// write pw /// this takes 792ms at AtCoder
  Factorial[0]=1;
  for(int i=1;i<5e6;i++)Factorial[i]=Factorial[i-1]*i%MOD;
  for(int i=0;i<5e6;i++)Finverse[i]=pw(Factorial[i],MOD-2);
}
int nCk(int n,int k){
  if(n<k)return 0;if(k<0)return 0;
  if(!Factorial[0])Cinit();
  int res=Factorial[n];
  res*=Finverse[k];res%=MOD;
  res*=Finverse[n-k];res%=MOD;
  return res;
}
int n,m,k;
int f(int a){
  if(a&1)return 0;
  a>>=1;
  int res=nCk(n,a)*nCk(m,a)%MOD;
  res*=Factorial[n-1]*Factorial[m-1]%MOD;res%=MOD;
  return res*a%MOD;
}
signed main(){
  cin>>n>>m>>k;
  assert(1<=n);
  assert(1<=m);
  assert(n<=100000);
  assert(m<=100000);
  assert(0<=k);
  assert(k<=200000);
  assert(k<=n+m);
  int ans=0;
  for(int i=0;i<=n+m-k;i++)ans+=f(i),ans%=MOD;
  cout<<ans<<endl;
}
            
            
            
        
            
cureskol