題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2089
有兩種方法:
1.數位DP算法
2.暴力打表——真是個好法子!!!
接下來是注意點:
1.一般這種數組中的一個數減去一個數組的另一個數,sum[i]-sum[j],這時候就要注意是sum[i]-sum[j]還是sum[i]-sum[j-1]
2.打表就不要進行多余的循環和語句
題目代碼:


#include<iostream> using namespace std; int sum[1000003]={0}; int solve(int n) {int pre=0,now=0;while(n>0){now=n%10;if(now==4)return 0;if(now==6&&pre==2)return 0;n=n/10;pre=now;}return 1; } int main() {int n,m;for(int i=1;i<=1000000;i++){sum[i]=sum[i-1];if(solve(i))sum[i]++;}while(cin>>n>>m){if(n==0&&m==0)break;cout<<sum[m]-sum[n-1]<<endl;} }
?