1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #include <iostream> 6 #include <algorithm> 7 #include <climits> 8 #include <queue> 9 #define ll long long 10 11 using namespace std; 12 const int N = 1e4+1000; 13 14 int digit[25],l,k; 15 ll dp[25][100][100]; 16 17 void init() 18 { 19 memset(dp,-1,sizeof(dp)); 20 } 21 22 ll dfs( int cur, int n, int sum, int f) 23 { 24 if(cur == -1) 25 { 26 return (n == 0 && sum == 0) ?1:0; 27 } 28 29 if(!f && dp[cur][n][sum] != -1) 30 return dp[cur][n][sum]; 31 32 ll ans = 0; 33 int len = f?digit[cur]:9; 34 for(int i = 0; i <= len; i++) 35 { 36 ans += dfs(cur-1, (n*10 + i)%k, (sum+i)%k, f&(i == len)); 37 } 38 if(!f) 39 return dp[cur][n][sum] = ans; 40 else 41 return ans; 42 } 43 44 ll work(int num,int mod) 45 { 46 l = 0; 47 while(num > 0) 48 { 49 digit[l++] = num%10; 50 num /= 10; 51 } 52 ll ans = dfs(l-1, 0, 0, 1); 53 return ans; 54 } 55 56 void solve() 57 { 58 int a,b; 59 60 init(); 61 scanf("%d %d %d",&a,&b,&k); 62 if(k > 90) 63 { 64 printf("0 "); 65 return ; 66 } 67 printf("%lld ", work(b,k) - work(a-1,k)); 68 69 } 70 71 int main(void) 72 { 73 74 int t,cnt = 0; 75 scanf("%d",&t); 76 while(t--) 77 { 78 printf("Case %d: ",++cnt); 79 solve(); 80 } 81 return 0; 82 }