Submission #3411532


Source Code Expand

#include"bits/stdc++.h"
using namespace std;
using ll = int64_t;

int main() {
    ll N, X, Y, Z;
    cin >> N >> X >> Y >> Z;

    constexpr ll MOD = (ll)1e9 + 7;
    const ll MAX = 1LL << (X + Y + Z - 1);

    //XYZを含む⇔符号化するとX + Y + Z - 1個目, Y + Z - 1個目, Z - 1個目のビットが立っている
    const ll NG_BITS = (1LL << (X + Y + Z - 1)) | (1LL << (Y + Z - 1)) | (1LL << (Z - 1));

    //dp[i][j] := i番目まで見て,直前の数列を符号化したものがjであるときのXYZとなっていない数
    vector<vector<ll>> dp(N + 1, vector<ll>(MAX, 0));
    dp[0][0] = 1;

    for (ll i = 0; i < N; i++) {
        for (ll j = 1; j <= 10; j++) {
            for (ll k = 0; k < MAX; k++) {
                //k:前回までのbit列
                //遷移:kをjだけ左にシフトして、そこに先頭だけ1を立てたものを入れる
                ll t = (k << j) | (1LL << (j - 1));

                //XYZとなっているかの判定
                if ((NG_BITS & t) != NG_BITS) {
                    //上の方は関係ないのでマスクする
                    t &= (MAX - 1);

                    dp[i + 1][t] += dp[i][k];
                    dp[i + 1][t] %= MOD;
                }
            }
        }
    }

    //全ての数からXYZとならない数を引く
    ll ans = 1;
    for (ll i = 0; i < N; i++) {
        ans *= 10;
        ans %= MOD;
    }

    for (ll i = 0; i < MAX; i++) {
        ans += MOD - dp[N][i];
        ans %= MOD;
    }
    cout << ans << endl;
}

Submission Info

Submission Time
Task E - Iroha and Haiku
User tokumini
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1600 Byte
Status AC
Exec Time 144 ms
Memory 21888 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 4
AC × 35
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_max1.txt, subtask1_max2.txt, subtask1_max3.txt, subtask1_min1.txt, subtask1_min2.txt, subtask1_min3.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 12 ms 2816 KB
subtask0_sample_02.txt AC 16 ms 3328 KB
subtask0_sample_03.txt AC 1 ms 384 KB
subtask0_sample_04.txt AC 144 ms 21888 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 4 ms 896 KB
subtask1_03.txt AC 2 ms 384 KB
subtask1_04.txt AC 3 ms 640 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 1 ms 256 KB
subtask1_07.txt AC 2 ms 384 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt AC 1 ms 256 KB
subtask1_10.txt AC 1 ms 256 KB
subtask1_11.txt AC 1 ms 256 KB
subtask1_12.txt AC 10 ms 2176 KB
subtask1_13.txt AC 3 ms 896 KB
subtask1_14.txt AC 1 ms 256 KB
subtask1_15.txt AC 6 ms 1536 KB
subtask1_16.txt AC 45 ms 8832 KB
subtask1_17.txt AC 11 ms 2432 KB
subtask1_18.txt AC 26 ms 5504 KB
subtask1_19.txt AC 13 ms 2816 KB
subtask1_20.txt AC 4 ms 896 KB
subtask1_21.txt AC 24 ms 5120 KB
subtask1_22.txt AC 13 ms 2688 KB
subtask1_23.txt AC 11 ms 2432 KB
subtask1_24.txt AC 6 ms 1408 KB
subtask1_25.txt AC 13 ms 2688 KB
subtask1_max1.txt AC 143 ms 21888 KB
subtask1_max2.txt AC 136 ms 20864 KB
subtask1_max3.txt AC 58 ms 10880 KB
subtask1_min1.txt AC 1 ms 256 KB
subtask1_min2.txt AC 1 ms 256 KB
subtask1_min3.txt AC 12 ms 2816 KB