Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
97474 揭伟琦 不吉利的数 C++ Accepted 1 MS 276 KB 860 2024-11-15 23:04:25

Tests(10/10):


Code:

#include <bits/stdc++.h> using namespace std; const int maxn=9; int f[maxn][10]; void init() { for(int i=0; i<=9; i++) if(i!=4) f[1][i]=1; for(int i=2; i<=maxn; i++) for(int j=0; j<=9; j++) { if(j==4) continue; for(int k=0; k<=9; k++) { if(k==4||j==6&&k==2) continue; f[i][j]+=f[i-1][k]; } } } int dp(int n) { if(!n) return 1; vector<int> nums; while(n) { nums.push_back(n%10); n/=10; } int ans=0; int last=0; for(int i=nums.size()-1; i>=0; i--) { int x=nums[i]; for(int j=0; j<x; j++) { if(j==4||last==6 && j==2) continue; ans+=f[i+1][j]; } if(x==4||last==6&&x==2) break; last=x; if(!i) ans++; } return ans; } int main() { init(); int L,R; while(cin>>L>>R) { if(L==0&&R==0) break; cout<<dp(R)-dp(L-1)<<endl; } return 0; }