Submission #18296806
Source Code Expand
Copy
#include<bits/stdc++.h> #define FOR(i, a, b) for(int i=(a);i<(b);++i) #define REP(i,n) FOR(i, 0, n) #define all(x) (x).begin(),(x).end() const int INF = 1e9+1; using namespace std; using ll = long long; using p = pair<int, int>; using v = vector<int>; int main(){ int R; string S; cin >> R >> S; int N = S.size(); ll Q = 1e9+7; vector<vector<vector<ll>>> dp(N+1, vector<vector<ll>>(2, vector<ll>(R, 0))); dp[0][0][0] = 1; REP(n, N) { int D = S[n] - '0'; // cout << "D: " << D << endl; REP(f, 2) { REP(r, R) { for(int d=0; d <= (f ? 9 : D); d++) { dp[n+1][f || (d < D)][(r+d)%R] += dp[n][f][r]; dp[n+1][f || (d < D)][(r+d)%R] %= Q; } } } } // REP(i, N+1) { // cout << "n: " << i << endl; // REP(j, 2) { // cout << "f: " << j << endl; // REP(k, R) { // cout << dp[i][j][k] << " "; // } // cout << endl; // } // cout << "-------------------\n"; // } cout << (dp[N][0][0] + dp[N][1][0] - 1) << endl;; return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - 数 |
User | AceK |
Language | C++ (GCC 9.2.1) |
Score | 4 |
Code Size | 1094 Byte |
Status | AC |
Exec Time | 110 ms |
Memory | 19560 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 4 / 4 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00, 01, 02, 90, 91 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00 | AC | 9 ms | 3652 KB |
01 | AC | 69 ms | 13584 KB |
02 | AC | 110 ms | 19560 KB |
90 | AC | 9 ms | 3344 KB |
91 | AC | 2 ms | 3524 KB |