-
C - 不要62
- HDU - 2089
- 一个dp题目汇总:https://wenku.baidu.com/view/d4104419c77da26924c5b078.html
-
#include <iostream> using namespace std; #define ll long long ll dp[20][2],digit[20],t,n,m; ll dfs(int len,bool if6,bool limit) { if(len==0)return 1; if(!limit&&dp[len][if6]) return dp[len][if6]; ll cnt=0,upbound=(limit?digit[len]:9); for(int i=0; i<=upbound; i++) { if(if6&&i==2) continue; if(i==4) continue; cnt+=dfs(len-1, i==6,limit&&i==upbound); } if(!limit) dp[len][if6]=cnt; return cnt; } ll solve(ll num) { int k=0; while(num) { digit[++k]=num%10; num/=10; } return dfs(k,false,true); } int main() { ios::sync_with_stdio(false); while(cin>>m>>n) { if(n+m==0) break; cout<<solve(n)-solve(m-1)<<endl; } return 0; }
C - 不要62 -上下界数位DP
最新推荐文章于 2022-02-21 17:39:31 发布