結果
| 問題 |
No.372 It's automatic
|
| コンテスト | |
| ユーザー |
ei1333333
|
| 提出日時 | 2016-05-13 22:41:26 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 613 bytes |
| コンパイル時間 | 1,363 ms |
| コンパイル使用メモリ | 168,112 KB |
| 実行使用メモリ | 13,632 KB |
| 最終ジャッジ日時 | 2024-10-05 16:59:33 |
| 合計ジャッジ時間 | 8,887 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 1 TLE * 1 -- * 21 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
string S;
int M;
map< pair< int, int >, int > dp;
inline int rec(int idx, int value)
{
if(dp.find({idx, value}) != dp.end()) return(dp[{idx, value}]);
if(idx == S.size()) return(value == 0);
return(dp[{idx, value}] = rec(idx + 1, (value * 10 + S[idx]) % M) + rec(idx + 1, value) % mod);
}
int main()
{
cin >> S;
for(int i = 0; i < S.size(); i++) S[i] -= '0';
cin >> M;
int ret = 0;
for(int i = 0; i < S.size(); i++) {
if(S[i] == 0) ++ret;
else (ret += rec(i + 1, S[i] % M)) %= mod;
}
cout << ret << endl;
}
ei1333333