結果

問題 No.250 atetubouのzetubou
ユーザー Ai3ShotaAi3Shota
提出日時 2018-08-18 20:12:18
言語 C++11
(gcc 11.4.0)
結果
WA  
実行時間 -
コード長 1,175 bytes
コンパイル時間 1,404 ms
コンパイル使用メモリ 162,792 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-04-24 11:53:13
合計ジャッジ時間 2,790 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
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 AC 2 ms
5,376 KB
testcase_21 AC 1 ms
5,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;

ll Q, N;
vector<ll> fact;
vector<ll> invs;

//1!~N!を計算
vector<ll> Factorial(){
    vector<ll> v{1}; //0!
    ll f = 1;
    for(ll i = 1; i <= N; ++i){
        f *= i;
        f %= MOD;
        v.push_back(f);
    }
    return v;
}

//a^bを計算
ll Pow(ll a,ll b){
    ll res = 1;
    while(b){
        if(b % 2) res = (res * a) % MOD;
        a = (a * a) % MOD;
        b >>= 1;
    }
    return res;
}

//1!~N!の逆数の計算
vector<ll> Reciprocal(){
    ll inv = Pow(fact[N], MOD - 2);
    vector<ll> v(N + 1, 1);
    v[N] = inv;
    for(ll i = N; i > 1; --i){
        inv *= i;
        inv %= MOD;
        v[i - 1] = inv;
    }
    return v;
}

//組合せの計算
ll nCr(ll n, ll r){
    if(r > n) return 0;
    return (fact[n] * invs[r] % MOD) * invs[n - r] % MOD;
}

int main(void){
    
    N = 2000;
    fact = Factorial();
    invs = Reciprocal();
    
    cin >> Q;
    for(int i = 0; i < Q; ++i){
        ll D, X, T; cin >> D >> X >> T;
        if(nCr(X + D - 1, X) <= T) cout << "AC" << endl;
        else cout << "ZETUBOU" << endl;
    }
    
    return 0;
}
0