Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

Digit Dynamic Programming

$
0
0

I have been solving http://www.codechef.com/COOK46/problems/ANUBGC

I cross checked my answers for various inputs with the accepted solutions & all were correct even for N=10^17. Till now mine solution isn't accepted & I'm unable to catch the bug,where it went wrong .Any help would be appreciated. I used the approach as mentioned in the editorial but for storing states I used - dp{Max_Length_of N}[number_is_zero/not][required_number_found/not] //dp[30][2][2] as I've matched the answers with many accepted solutions but still mine wasn't accepted.

http://www.codechef.com/viewsolution/4136822

ll F(int size,bool zero,bool found,char dig){//constructing numbers

if(size==1){
    if(found)return 1;//if the required number found
    else return 0;
}

if(mem[size][zero][found])return dp[size][zero][found];

mem[size][zero][found]=1;
ll res=0;
ll ans;
for(char i='0';i<='9';i++){
    ans=F(size-1,zero||i!='0',found||i==dig,dig);//constructing number recursively
    res+=ans;
}

dp[size][zero][found]=res;

return res;
}



 ll solve(char dig){

ll ret=0;
int qued=len;

bool zero=0,found=0;ll sum;

for(int pos=0;pos<len;pos++){
    char check=arr[pos];
    zero=0;
        for(char val='0';val<check;val++){//construct number 
            sum=F(qued,zero||val!='0',found||val==dig,dig);
            ret+=sum;
        }
        found=found||check==dig;zero=zero||arr[pos];
        qued--;
}
if(found)ret++;//adding the numbers itself if contains the required digit

return ret;
}


ll zr(){//gives numbers such as 0-,00-,000- upto length of N
ll res=0,cur=1;
for(int i=1;i<len;i++){
    cur*=9;
    res+=cur;
}
return res;
 }


 //solution
for(char i='0';i<='9';i++){//calculating numbers for each digit 
        sum=solve(i);
        ans+=sum;
    }
  ans=ans-zr()-1;//subtracting numbers formed from 0-,00-,000-,....& 0 itself
  //for dig=0 ans would also contain numbers like 0{1-9}*,00{1-9}*... & need to be subtracted

Viewing all articles
Browse latest Browse all 39796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>