https://www.codechef.com/problems/DGTCNT?tab=statement
can anyone suggest solution for this question?
include <bits/stdc++.h>
using namespace std; using ll = long long int;
ll f(ll i ,int skip,ll tight , vector a , string s){
if(i == s.size()){
for(ll v : a) {
if(v == 0) return 0;
}
return 1;
}
ll ans = 0;
if(skip)
ans += f(i+1,1,0 , a , s); //fill with 0
ll up = tight ? s[i] - '0' : 9;
for(ll dig = skip ? 1 : 0 ; dig <= up ; dig++){
a[dig]--;
ans += f(i+1 ,0,tight & (dig == up),a,s);
}
return ans;}
void solve(){
string l,r; cin>>l>>r; ll n = 10;
vector a(n); vector tmp;
for (int i = 0; i < n; ++i) { cin>>a[i]; }
ll rr = f(0,1,1,a,r); ll lr = f(0,1,1,a,to_string(stoi(l)-1)); ll ans = rr — ll; ll len = stoi(r) — stoi(l) + 1;
cout<<len — ans ;
}
int main() {
int t; cin>>t; while(t--) solve();
return 0; }







