結果
問題 | No.41 貯金箱の溜息(EASY) |
ユーザー | kroton |
提出日時 | 2014-10-16 23:42:56 |
言語 | C++11 (gcc 11.4.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 954 bytes |
コンパイル時間 | 786 ms |
コンパイル使用メモリ | 71,560 KB |
実行使用メモリ | 32,484 KB |
最終ジャッジ日時 | 2024-06-09 16:11:08 |
合計ジャッジ時間 | 12,994 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ソースコード
#include <iostream> #include <vector> #include <set> #include <map> #include <queue> #include <algorithm> #include <cstring> #include <cstdio> #include <fstream> #include <sstream> using namespace std; typedef long long ll; const ll MOD = 1000000009ll; int coin[] = {1, 1, 2, 3, 4, 5, 6, 7, 8, 9}; ll dp[100000][20]; ll solve(ll K){ memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for(int k=0;k<K;k++){ for(int last=0;last<10;last++){ int add = coin[last]; dp[k+add][last] = (dp[k+add][last] + dp[k][last]) % MOD; dp[k][last+1] = (dp[k][last+1] + dp[k][last]) % MOD; } } ll res = 0; for(int i=0;i<10;i++)res = (res + dp[K][i]) % MOD; return res; } int main(){ int T; cin >> T; while(T--){ ll M; cin >> M; cout << solve(M / 111111) << endl; } return 0; }