結果

問題 No.895 MESE
ユーザー Ogtsn99Ogtsn99
提出日時 2019-09-27 23:18:16
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,813 bytes
コンパイル時間 1,761 ms
コンパイル使用メモリ 170,576 KB
実行使用メモリ 17,040 KB
最終ジャッジ日時 2024-09-25 01:52:08
合計ジャッジ時間 3,055 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 17 ms
16,716 KB
testcase_01 AC 18 ms
16,744 KB
testcase_02 WA -
testcase_03 AC 19 ms
16,700 KB
testcase_04 AC 18 ms
16,684 KB
testcase_05 AC 18 ms
16,688 KB
testcase_06 AC 19 ms
16,844 KB
testcase_07 AC 18 ms
16,816 KB
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define rrep(i,n) for(int (i)=((n)-1);(i)>=0;(i)--)
#define itn int
#define all(x) (x).begin(),(x).end()
#define F first
#define S second
const long long INF = 1LL << 60;
const int MOD = 1000000007;
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
const int MAX = 510000;

long long fac[MAX], finv[MAX], inv[MAX];
void COMinit() {
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (int i = 2; i < MAX; i++){
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD;
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }
}
long long COM(int n, int k){
    if (n < k) return 0;
    if (n < 0 || k < 0) return 0;
    return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}

signed main(void){
    int a,b,c; cin>>a>>b>>c;
    COMinit();
    vector <int> bit(100010); 
    itn n = a+b+c;
    bit[0] = 1;
    rep(i,100005){
        bit[i+1] = (bit[i]*2)%MOD;
    }
    vector <int> sumbit(100010);
    sumbit[0] = 1;
    rep(i,100005){
        if(i==0) continue;
        sumbit[i] = (sumbit[i-1] + bit[i])%MOD;
    }
    int ans = 0;
    rep(i,a){
        int nowa = a-(i+1), nowb = b-1, nowc = c;
        //cout<<nowa<<' '<<nowb<<' '<<nowc<<endl;
        //long double ritsu =/(nowa+nowb+nowc) * nowc;
        int x = n-i-2;
        
        int add = COM(x,nowb)*COM(x-nowb, nowa)*COM(x-nowb-nowa,nowc);
        add *= nowc;
        add %= MOD;
        add /= (x);
         add %= MOD; add*= sumbit[x-1];
        add %= MOD;
        ans += add;
        ans %= MOD;
    }
    cout<<ans<<endl;
}
0