提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |