Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define Write freopen("out.txt","w",stdout)
  3. #define Read freopen("in.txt","r",stdin)
  4. #define sf(a) scanf("%d",&a)
  5. #define sff(a,b) scanf("%d %d",&a,&b)
  6. #define sfff(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
  7. #define ll long long
  8. #define mod 100000007
  9. #define mx 2050
  10. #define Pf(t) prll f("Case %d: ",t)
  11.  
  12.  
  13. ~~~~~
  14. using namespace std;
  15. ll dp[ 10 ][ 3 ][ 82 ][82];
  16. ll j;
  17. string str;
  18. template <typename T>
  19. string to_string(T val)
  20. {
  21. stringstream stream;
  22. stream << val;
  23. return stream.str();
  24. }
  25. ll solve(string& a, ll idx, bool small,ll presum,ll ans)
  26. {
  27.  
  28. if(idx>=a.size())
  29. {
  30. ans=ans%j;
  31. presum=presum%j;
  32. if(ans==0&&presum==0)
  33. {
  34. return 1;
  35. }
  36. else return 0;
  37. }
  38. if(dp[idx][small][presum][ans]!=-1)
  39. return dp[idx][small][presum][ans];
  40. ll limit=9;
  41. if(small)
  42. {
  43. limit=a[idx]-'0';
  44. }
  45. ll sum=0;
  46. for(ll i=0; i<=limit; i++)
  47. {
  48. bool ns;
  49. if(i<a[idx]-'0')
  50. {
  51. ns=0;
  52. }
  53. else
  54. {
  55. ns=small;
  56. }
  57. ans=((ans*10)+i)%j;
  58. sum+=solve(a,idx+1,ns,((presum+i)%j),ans);
  59. }
  60. dp[idx][small][presum][ans]=sum;
  61. return dp[idx][small][presum][ans];
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. }
  69. int main()
  70. {
  71.  
  72. ll a,b;
  73.  
  74. int tc;
  75.  
  76. cin>>tc;
  77.  
  78. string z,p;
  79. for(int tt=1; tt<=tc; tt++)
  80. {
  81. scanf("%lld %lld %lld",&a,&b,&j);
  82. string a1=to_string(a-1);
  83. string b1=to_string(b);
  84. if(j==1) printf("Case %d: %lld\n",tt,b-a+1);
  85. else if(j>81) printf("Case %d: 0\n",tt);
  86. else{
  87. memset(dp,-1,sizeof(dp));
  88. ll g=solve(a1,0,1,0,0);
  89. memset (dp,-1, sizeof(dp));
  90. ll k=solve(b1,0,1,0,0);
  91. printf("Case %d: %lld\n",tt,k-g);
  92.  
  93.  
  94. }
  95. }
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement