結果

問題 No.147 試験監督(2)
ユーザー h_nosonh_noson
提出日時 2016-04-19 10:40:31
言語 C++11
(gcc 11.4.0)
結果
MLE  
実行時間 -
コード長 895 bytes
コンパイル時間 611 ms
コンパイル使用メモリ 73,192 KB
実行使用メモリ 222,784 KB
最終ジャッジ日時 2024-04-15 03:43:04
合計ジャッジ時間 7,757 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 MLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

#define RREP(i,s,e) for (i = s; i >= e; i--)
#define rrep(i,n) RREP(i,n,0)
#define REP(i,s,e) for (i = s; i < e; i++)
#define rep(i,n) REP(i,0,n)
#define INF 100000000
#define MOD 1000000007

typedef long long ll;

map<ll,int> m;

ll dfs(ll c) {
    if (m.count(c))
        return m[c];
    if (c < 1)
        return m[c] = 1;
    else if (c == 1)
        return m[c] = 2;
    else
        return m[c] = (dfs(c/2)*dfs(c-c/2-1)%MOD + dfs(c/2-1)*dfs(c-c/2-2)%MOD) % MOD;
}

int main() {
    int i, n;
    ll ans;
    cin >> n;
    ans = 1;
    rep (i,n) {
        ll c, d;
        string sd;
        cin >> c >> sd;
        d = 0;
        for (auto chr : sd)
            d = (d*10 + chr - '0') % MOD;
        ans *= dfs(c) * d % MOD;
        ans %= MOD;
    }
    cout << ans << endl;
    return 0;
}
0