Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- string x;
- ll dp[30][100][100][3];
- ll a,b,k;
- ll digitdp(ll pos,ll sum,ll rem,ll flag)
- {
- if(pos==x.size())
- {
- if(sum%k==0 && rem%k==0)
- return 1;
- return 0;
- }
- if(dp[pos][sum][rem][flag]!=-1)
- return dp[pos][sum][rem][flag];
- ll ans=0;
- if(flag==0)
- {
- ll f=x[pos]-'0';
- for(ll i=0;i<f;i++)
- ans+=digitdp(pos+1,sum+i,((rem*10)+i)%k,1);
- ans+=digitdp(pos+1,sum+f,((rem*10)+f)%k,0);
- }
- else
- {
- for(ll i=0;i<=9;i++)
- ans+=digitdp(pos+1,sum+i,((rem*10)+i)%k,1);
- }
- return dp[pos][sum][rem][flag]=ans;
- }
- ll solve(ll num)
- {
- x=to_string(num);
- //cout<<x<<endl;
- memset(dp,-1,sizeof(dp));
- return digitdp(0,0,0,0);
- }
- int main()
- {
- // freopen("input.txt","r",stdin);
- // freopen("output.txt","w",stdout);
- ll t,cas;
- cin>>t;
- for(cas=1;cas<=t;cas++)
- {
- cin>>a>>b>>k;
- if(k>=90)
- {
- cout<<"Case "<<cas<<": "<<0<<endl;
- }
- else
- {
- cout<<"Case "<<cas<<": "<<solve(b)-solve(a-1)<<endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement