洛谷p2602 數字計數

2021-09-11 17:13:18 字數 1073 閱讀 9928

題目描述

給定兩個正整數a和b,求在[a,b]中的所有整數中,每個數碼(digit)各出現了多少次

一開始想歪了,想去列舉每一位,然後統計每一位的情況。

轉念一想,數字dp是統計[a,b]內符合條件的數字的個數。

換一種方法,對key~[0,9],統計含1個key,2個key…len(len為數字的長度)個key的數字,然後加一下,就可以得到答案了

#include

using

namespace std;

#include

#include

long

long a,b;

int g[30]

;long

long dp[30]

[30][

2];long

long

dfs(

int key,

int num,

int target,

int pos,

bool limit,

bool sta)

else}if

(!limit&&dp[pos]

[num]

[sta]!=-

1)return dp[pos]

[num]

[sta]

;int up=limit?g[pos]:9

;long

long res=0;

for(

int i=

0;i<=up;i++

)else}if

(!limit) dp[pos]

[num]

[sta]

=res;

return res;

}long

long

solve

(long

long x,

int key)

for(

int i=

1;i<=pos;i++

)return ans;

}int

main()

}

洛谷P2602 ZJOI2010 數字計數 題解

很裸的一道數字dp的板子 定義f 當前列舉到的數字 當前數字之前的答案 列舉的數字 其它的套板子就可以了,要注意一下字首0的判斷 1 include2 include3 include4 include5 include6 include7 using namespace std 8 typedef...

P2602 ZJOI2010 數字計數

題目描述 給定兩個正整數a和b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次。輸入格式 輸入檔案中僅包含一行兩個整數a b,含義如上所述。輸出格式 輸出檔案中包含一行10個整數,分別表示0 9在 a,b 現了多少次。輸入輸出樣例 輸入 1 1 99 輸出 1 9 20 20 2...

P2602 ZJOI2010 數字計數

p2602 題目描述 給定兩個正整數 a 和 b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次。輸入格式 僅包含一行兩個整數 a,b,含義如上所述。輸出格式 包含一行十個整數,分別表示 0 9 在 a,b 現了多少次。1 99 9 20 20 20 20 20 20 20 20...