hdu2089(不要62)非數位dp的簡單做法

鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2089

數位dp經典入門題,這裏給出一種簡單做法。

#include<bits/stdc++.h>

typedef long long ll;
typedef long double ld;
 
#define INF 0x3f3f3f3f
#define MOD 1e+6

int main(){
    int n, m, ans;
    int i, j;
    
    while(scanf("%d %d", &n, &m) && n && m){    
        ans = 0;
        for(i = n; i <= m; ++i){
            int tmp = i;
            while(tmp){
                if(tmp % 10 == 4){
                    ans++;                    
                    break;
                }
                if(tmp % 100 == 62){
                    ans++;
                    break;
                }
                tmp /= 10;
            }
        }
        printf("%d\n", m-n+1-ans);
    }
    return 0;
}

注意點:只能記錄非吉利數的個數,最後再相減得到答案(m-n+1-ans), 直接計數會超時,因爲非吉利數要比吉利數要少得多,執行次數也就少的多。(要直接計算的話,要打表預處理)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章