#include<bits/stdc++.h> using namespace std; #define ll long long int a[20]; ll dp[20][MAXS1][MAXS2]; ll dfs(int pos,int s1,int s2,bool lead,bool limit) { if(pos==-1) { return ?; } if(!limit && !lead && dp[pos][s1][s2]!=-1) return dp[pos][s1][s2]; int up=limit?a[pos]:9; ll ans=0; for(int i=0; i<=up; i++) { int ns1=op1(s1); int ns2=op2(s2); ans+=dfs(pos-1,ns1,ns2,lead && i==0,limit && i==a[pos]); } if(!limit && !lead) dp[pos][s1][s2]=ans; return ans; } ll solve(ll x) { if(x<=0) return ?; int pos=0; while(x) { a[pos++]=x%10; x/=10; } return dfs(pos-1,INITS1,INITS2,true,true); } int main() { memset(dp,-1,sizeof(dp)); ll le,ri; while(~scanf("%lld%lld",&le,&ri)) { printf("%lld\n",solve(ri)-solve(le-1)); } }
来源:https://www.cnblogs.com/Inko/p/11393887.html