Submission #5902709
Source Code Expand
#include <bits/stdc++.h> using namespace std; using ll = long long; #define REP(i,n) for(int i=0, i##_len=(n); i<i##_len; ++i) #define RREP(i,a,n) for(int i=(a), i##_len=(n); i<i##_len; ++i) const ll MAX = 1e9+7; ll dp[10001][2][101]; int D; string N; ll solve(int k, int big, int sum) { if (k == N.size()) return sum == 0; if (dp[k][big][sum] != -1) return dp[k][big][sum]; ll ret = 0; int c = N[k] - '0'; REP(i, big ? 10 : c+1) { int b = big == 1 || i < c; ret += solve(k+1, b, (sum+i)%D); ret %= MAX; } return dp[k][big][sum] = ret; } int main(int argc, char *argv[]) { cin >> D; cin >> N; if (D==1) { cout << N << endl; return 0; } fill_n(&dp[0][0][0], 10001*2*101, -1); solve(0, 0, 0); cout << dp[0][0][0] - 1<< endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - 数 |
User | vintersnow |
Language | C++14 (GCC 5.4.1) |
Score | 4 |
Code Size | 828 Byte |
Status | AC |
Exec Time | 96 ms |
Memory | 17024 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 | 7 ms | 16000 KB |
01 | AC | 61 ms | 17024 KB |
02 | AC | 96 ms | 17024 KB |
90 | AC | 6 ms | 16000 KB |
91 | AC | 6 ms | 16000 KB |