From dd1446ae1c1cb2a6cb42bff0aa3a0788deb3a829 Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Thu, 10 Apr 2025 13:44:58 +0530 Subject: [PATCH] Create 2999. Count the Number of Powerful Integers1 --- 2999. Count the Number of Powerful Integers1 | 40 ++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 2999. Count the Number of Powerful Integers1 diff --git a/2999. Count the Number of Powerful Integers1 b/2999. Count the Number of Powerful Integers1 new file mode 100644 index 0000000..2fa4ed7 --- /dev/null +++ b/2999. Count the Number of Powerful Integers1 @@ -0,0 +1,40 @@ +class Solution { +long long dp[17][2]; +private: + long long getAns(string& s,int n,bool tight,int limit,int m,long long t){ + if(n == m) { + if(!tight) return 1ll; + else{ + string temp=s.substr(s.length()-m); + long long ele=stoll(temp); + if(ele >= t) return 1ll; + return 0ll; + } + } + if(n < m) return 0ll; + if(dp[n][tight] != -1) return dp[n][tight]; + int ub=tight ? s[s.length()-n]-'0' : 9; + long long ans=0; + + for(int i=0;i<=min(ub,limit) ;i++){ + ans+=getAns(s,n-1,tight&(ub==i),limit,m,t); + } + + return dp[n][tight]=ans; + } +public: + long long numberOfPowerfulInt(long long start, long long finish, int limit, string s) { + start--; + + string st=to_string(start); + + string f=to_string(finish); + long long t=stoll(s); + memset(dp,-1,sizeof(dp)); + long long left=getAns(st,st.length(),1,limit,s.length(),t); + memset(dp,-1,sizeof(dp)); + long long right=getAns(f,f.length(),1,limit,s.length(),t); + + return (right-left); + } +};