#include using namespace std; #define FOE(i, s, t) for (int i = s; i <= t; i++) #define FOR(i, s, t) for (int i = s; i < t; i++) #define ff first #define ss second #define int long long #define pb push_back #define mp make_pair #define pii pair #define vi vector #define mii map #define pqb priority_queue #define pqs priority_queue > #define setbits(x) __builtin_popcountll(x) #define zrobits(x) __builtin_ctzll(x) #define mod 1000000007 #define inf 1e18 #define ps(x,y) fixed<>x; while(x--) #define FIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int dp[12][92][2][92]; vi v; int func(int pos, int sum, int p, int num, int k) { if (pos >= v.size()) { if (sum % k == 0 && num % k == 0) return 1; return 0; } if (dp[pos][sum][p][num] != -1) return dp[pos][sum][p][num]; int maxV = 9; if (p == 0) maxV = v[pos]; int res = 0; FOR(i, 0, maxV + 1) { int temp_p = p; if (temp_p==0 && i < v[pos]) temp_p = 1; int temp_num = (10 * num + i) % k; int temp_sum = (sum + i) % k; res += func(pos + 1, temp_sum, temp_p, temp_num, k); } return dp[pos][sum][p][num] = res; } int funcUtil(int a, int k) { v.clear(); while (a) { v.pb(a % 10); a = a / 10; } memset(dp, -1, sizeof(dp)); reverse(v.begin(), v.end()); return func(0, 0, 0, 0, k); } void solve() { int a, b, k; cin >> a >> b >> k; if (k >= 90) { cout << 0 << "\n"; return ; } cout << funcUtil(b, k) - funcUtil(a - 1, k) << "\n"; } int32_t main() { FIO; #ifndef ONLINE_JUDGE freopen("input1.txt", "r", stdin); freopen("output1.txt", "w", stdout); #endif w(tc) { solve(); } }