結果
| 問題 |
No.41 貯金箱の溜息(EASY)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-05-05 08:41:43 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 20 ms / 5,000 ms |
| コード長 | 551 bytes |
| コンパイル時間 | 1,048 ms |
| コンパイル使用メモリ | 158,176 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-05 19:06:03 |
| 合計ジャッジ時間 | 1,757 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 |
ソースコード
#include "bits/stdc++.h"
using namespace std;
typedef long long Int;
#define REP(i,n) for(int (i)=0;(i)<(int)(n);++(i))
const Int MOD = 1e9 + 9;
const int N = 100000 + 10;
Int dp[N];
Int solve(int M) {
if (dp[0] == 0) {
int a[10] = {1, 1, 2, 3, 4, 5, 6, 7, 8, 9};
dp[0] = 1;
for (auto x: a) {
for (int m = 0; m + x < N; m++) {
dp[m + x] += dp[m];
if (dp[m + x] >= MOD) dp[m + x] -= MOD;
}
}
}
return dp[M];
}
int main() {
int T; cin >> T;
REP(t, T) {
Int M;
cin >> M;
cout << solve((int)(M / 111111)) << endl;
}
}