結果
| 問題 |
No.189 SUPER HAPPY DAY
|
| コンテスト | |
| ユーザー |
tottoripaper
|
| 提出日時 | 2015-04-22 01:10:29 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 927 bytes |
| コンパイル時間 | 431 ms |
| コンパイル使用メモリ | 57,648 KB |
| 実行使用メモリ | 9,168 KB |
| 最終ジャッジ日時 | 2024-07-04 23:25:38 |
| 合計ジャッジ時間 | 4,030 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 RE * 2 |
ソースコード
// Wrongri-La Shower
#include <iostream>
#include <cstring>
std::string M, D;
int dp[200][2][1801], dp2[200][2][1801];
const int MOD = 1000000009;
int rec(int digit, bool free, int rest, int (&dp)[200][2][1801], const std::string str){
if(digit == str.size()){return rest == 0;}
auto &res = dp[digit][free][rest];
if(res != -1){return res;}
res = 0;
for(int i=0;i<=(free?9:str[digit]-'0');i++){
if(rest < i){continue;}
res = (res + rec(digit+1, free | (i != str[digit]-'0'), rest - i, dp, str)) % MOD;
}
return res;
}
int main(){
std::cin >> M >> D;
memset(dp, -1, sizeof(dp));
memset(dp2, -1, sizeof(dp2));
long long res = 0ll;
for(int i=1;i<=1800;i++){
// printf("%d, %d\n", rec(0, 0, i, dp, M), rec(0, 0, j, dp2, D));
res = (1ll * rec(0, 0, i, dp, M) * rec(0, 0, i, dp2, D) + res) % MOD;
}
std::cout << res << std::endl;
}
tottoripaper