Advertisement
Farjana_akter

Untitled

Sep 2nd, 2020
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4.  
  5. string x;
  6. ll dp[30][100][100][3];
  7. ll a,b,k;
  8.  
  9.  
  10. ll digitdp(ll pos,ll sum,ll rem,ll flag)
  11. {
  12. if(pos==x.size())
  13. {
  14. if(sum%k==0 && rem%k==0)
  15. return 1;
  16. return 0;
  17. }
  18.  
  19. if(dp[pos][sum][rem][flag]!=-1)
  20. return dp[pos][sum][rem][flag];
  21. ll ans=0;
  22. if(flag==0)
  23. {
  24. ll f=x[pos]-'0';
  25. for(ll i=0;i<f;i++)
  26. ans+=digitdp(pos+1,sum+i,((rem*10)+i)%k,1);
  27. ans+=digitdp(pos+1,sum+f,((rem*10)+f)%k,0);
  28. }
  29. else
  30. {
  31. for(ll i=0;i<=9;i++)
  32. ans+=digitdp(pos+1,sum+i,((rem*10)+i)%k,1);
  33. }
  34.  
  35. return dp[pos][sum][rem][flag]=ans;
  36.  
  37. }
  38.  
  39. ll solve(ll num)
  40. {
  41. x=to_string(num);
  42. //cout<<x<<endl;
  43. memset(dp,-1,sizeof(dp));
  44. return digitdp(0,0,0,0);
  45. }
  46.  
  47.  
  48.  
  49. int main()
  50. {
  51. // freopen("input.txt","r",stdin);
  52. // freopen("output.txt","w",stdout);
  53.  
  54. ll t,cas;
  55. cin>>t;
  56. for(cas=1;cas<=t;cas++)
  57. {
  58. cin>>a>>b>>k;
  59. if(k>=90)
  60. {
  61. cout<<"Case "<<cas<<": "<<0<<endl;
  62. }
  63. else
  64. {
  65. cout<<"Case "<<cas<<": "<<solve(b)-solve(a-1)<<endl;
  66. }
  67. }
  68. return 0;
  69. }
  70.  
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement