➤ Problem Link : ANARC05H
👉 Hint : Simple 2D DP
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int ll dp[26][226]; int main() { string s; ll k=0; while(1) { ll val=0,sum=0; cin>>s; if(s=="bye") break; ll n=s.length(); memset(dp,0,sizeof(dp)); for(ll i=0;i<n;i++) { val+=s[i]-'0'; dp[i][val]=1; } for(ll i=1;i<n;i++) { val=0; for(ll j=i;j>0;j--) { val+=s[j]-'0'; for(ll k=0;k<=val;k++) dp[i][val]+=dp[j-1][k]; } } for(ll i=0;i<=225;i++) sum+=dp[n-1][i]; cout<<++k<<". "<<sum<<endl; } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!