Got AC classic int->long long issue :frowning:
I’ve been trying to submit my solution for https://www.spoj.com/problems/PR003004/15 but getting WA. I can’t see the issue. Can you help?
Code-
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll solve(string num,int pos,bool tight,int sum,vector<vector<vector<int>>> &dp)
{
if(pos==num.size())
return sum;
if(dp[pos][tight][sum]!=-1)
return dp[pos][tight][sum];
ll res=0;
if(tight)
{
int end_range=num[pos]-'0';
for(int i=0;i<=end_range;i++)
{
if(i!=end_range)
res+=solve(num,pos+1,0,sum+i,dp);
else
res+=solve(num,pos+1,1,sum+i,dp);
}
}
else
{
for(int i=0;i<=9;i++)
{
res+=solve(num,pos+1,0,sum+i,dp);
}
}
return dp[pos][tight][sum]=res;
}
int main()
{
int t;
cin>>t;
while(t--)
{
ll a,b;
cin>>a>>b;
vector<vector<vector<int>>> dp1(20,vector<vector<int>>(2,vector<int>(180,-1)));
vector<vector<vector<int>>> dp2(20,vector<vector<int>>(2,vector<int>(180,-1)));
ll ans1=solve(to_string(max(a-1,(ll)0)),0,1,0,dp1);
ll ans2=solve(to_string(b),0,1,0,dp2);
cout<<ans2-ans1<<endl;
}
}
created
last reply
- 2
replies
- 459
views
- 2
users
- 1
like
- 1
link