提出 #16794812


ソースコード 拡げる

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

typedef long long int ll;

const ll mod = 1000000000 + 7;

ll solve(int s, map<int,ll> &memo) {
    if (s == 0) {
        return 1;
    }
    if (memo.find(s) != memo.end()) {
        return memo.find(s)->second;
    }
    ll sum = 0;
    for (int i = 3; i <= s; i++) {
        int next = s - i;
        sum += solve(next, memo);
        sum %= mod;
    }
    memo[s] = sum;
    return sum;
}

int main () {

    int input;
    cin >> input;
    map<int, ll> memo;
    cout << solve(input, memo) << endl;
    return 0;
}

提出情報

提出日時
問題 D - Redistribution
ユーザ tomoya
言語 C++ (Clang 10.0.0)
得点 400
コード長 609 Byte
結果 AC
実行時間 78 ms
メモリ 3308 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 20
セット名 テストケース
Sample sample00, sample01, sample02
All case03, case04, case05, case06, case07, case08, case09, case10, case11, case12, case13, case14, case15, case16, case17, case18, case19, sample00, sample01, sample02
ケース名 結果 実行時間 メモリ
case03 AC 6 ms 3052 KiB
case04 AC 3 ms 3048 KiB
case05 AC 2 ms 3104 KiB
case06 AC 3 ms 3160 KiB
case07 AC 3 ms 3152 KiB
case08 AC 2 ms 3024 KiB
case09 AC 78 ms 3196 KiB
case10 AC 6 ms 3056 KiB
case11 AC 10 ms 3236 KiB
case12 AC 6 ms 3172 KiB
case13 AC 49 ms 3308 KiB
case14 AC 17 ms 3156 KiB
case15 AC 2 ms 3096 KiB
case16 AC 46 ms 3260 KiB
case17 AC 15 ms 3144 KiB
case18 AC 51 ms 3228 KiB
case19 AC 40 ms 3128 KiB
sample00 AC 3 ms 3024 KiB
sample01 AC 2 ms 3052 KiB
sample02 AC 63 ms 3308 KiB