問題描述
我們把乙個數稱為有趣的,當且僅當:
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。請計...