CCF 有趣的數 DP

2021-07-04 11:21:55 字數 1033 閱讀 1816

問題描述

我們把乙個數稱為有趣的,當且僅當:

1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。

2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。

3. 最高位數字不為0。

因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個:2031和2301。

請計算恰好有n位的有趣的數的個數。由於答案可能非常大,只需要輸出答案除以1000000007的餘數。

輸入格式

輸入只有一行,包括恰好乙個正整數n (4 ≤ n ≤ 1000)。

輸出格式

輸出只有一行,包括恰好n 位的整數中有趣的數的個數除以1000000007的餘數。

樣例輸入

4樣例輸出

3我我我我我我要被自己感動哭了!!!!雖然這道題很簡單。。。但是!!居然是自己想出來的!!而且琢磨了很久!!!至今終於感覺dp入門了呢!!!可是!!老紙是個要擼前端的人吶 = =。。。我在幹什麼。。。。。

每次想出來一道dp的感覺都是。。。哦~!原來狀態轉移是這個樣子的,原來那個方程是這個意思。。。也是醉的不要不要的。

說下想法。。。感覺自己還是寫多了。。。不過好歹也算簡單。。吧。。思路蠻直觀的。發現居然是個狀態機0 0...我又發現了什麼。。

狀態有點多。。。

0 -> 2

1 -> 20

2 -> 201

3 -> 203 

4 -> 23

5 ->230

6 -> 2013

7 -> 2031

8 -> 2301

#include #include using namespace std;

#define maxn 1010

#define ll long long

ll dp[maxn][10],mod;

void work()

{ for(int i=1;i<9;i++) dp[1][0]=0;

dp[1][0]=1;

for(int i=2;i

ccf 有趣的數 DP

問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計...

CCF習題 201312 4 有趣的數 (DP)

題意不說了,中文的題意!思路 dp思想!可以這麼想,設計乙個二維的dp i j i表示當前填第i個數,此時為第j 個狀態!第一維不用說,說說第二維!總共有四個數0,1,2,3,那麼當前該填i個數時,此時已經填了一些數,還剩下沒填的數,這個填了的數的集合就是狀態!0,1,2,3的四個數總共子集有0,1...

ccf 有趣的數

問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計...