Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define mp make_pair
- using namespace std;
- const int N = 20;
- const int MOD = 2520;
- const int R = 50;
- long long dp[N][MOD][R][2];
- int __gcd(int a, int b) {
- while (b) {
- a %= b;
- swap(a, b);
- }
- return a;
- }
- int __lcm(int a, int b) {
- if (a == 0 && b == 0) {
- return 0;
- }
- if (a == 0) return b;
- if (b == 0) return a;
- return a / __gcd(a, b) * b;
- }
- int dig(char t) {
- return t - '0';
- }
- long long calc(long long r) {
- string s = to_string(r);
- fill(&dp[0][0][0][0], &dp[0][0][0][0] + N * MOD * R * 2, 0);
- for (int i = 0; i < dig(s[0]); ++i) {
- dp[0][i][i][1] = 1;
- }
- dp[0][dig(s[0])][dig(s[0])][0] = 1;
- for (int i = 0; i + 1 < s.size(); ++i) {
- for (int mod = 0; mod < MOD; ++mod) {
- for (int lcm = 0; lcm < R; ++lcm) {
- // 1 updates
- for (int nxt = 0; nxt < 10; ++nxt) {
- int newmod = ((mod * 10) % MOD + (nxt) % MOD) % MOD;
- int newlcm = __lcm(lcm, nxt);
- dp[i + 1][newmod][newlcm][1] += dp[i][mod][lcm][1];
- }
- // 0 updates
- for (int nxt = 0; nxt < dig(s[i + 1]); ++nxt) {
- int newmod = ((mod * 10) % MOD + (nxt) % MOD) % MOD;
- int newlcm = __lcm(lcm, nxt);
- dp[i + 1][newmod][newlcm][1] += dp[i][mod][lcm][0];
- }
- int newmod = ((mod * 10) % MOD + (dig(s[i + 1]) % MOD)) % MOD;
- int newlcm = __lcm(lcm, dig(s[i + 1]));
- dp[i + 1][newmod][newlcm][0] += dp[i][mod][lcm][0];
- }
- }
- }
- int len = s.size() - 1;
- long long res = 0;
- for (int i = 0; i < MOD; ++i) {
- for (int c = 1; c < R; ++c) {
- if (i % c == 0) {
- res += dp[len][i][c][0] + dp[len][i][c][1];
- }
- }
- }
- return res;
- }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(0);
- int t;
- cin >> t;
- while (t--) {
- long long l, r;
- cin >> l >> r;
- cout << calc(r) - calc(l - 1) << '\n';
- }
- return 0;
- }
- /*
- * int overflow, array bounds
- * special cases (n=1?), set tle
- * do smth instead of nothing and stay organized
- * double troubles
- * same points in geoma
- * in game theory find win's cases
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement