演算法訓練 K好數(dp)

2021-08-14 13:39:46 字數 929 閱讀 8542

時間限制:1.0s 記憶體限制:256.0mb

提交此題 錦囊1 錦囊2

問題描述

如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k = 4,l = 2的時候,所有k好數為11、13、20、22、30、31、33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。

輸入格式

輸入包含兩個正整數,k和l。

輸出格式

輸出乙個整數,表示答案對1000000007取模後的值。

樣例輸入

4 2

樣例輸出

7 資料規模與約定

對於30%的資料,kl <= 106;

對於50%的資料,k <= 16, l <= 10;

對於100%的資料,1 <= k,l <= 100。

const

int mod=1e9+7;

const

int n=1e2+5;

ll dp[n][n];

/**思路:dp

k進製 l位數

例:1. input:3 2

11 20 22

output:3

2. input:3 3

111 200 202 220 222

output:5

從以上例子中可以看出 可以通過列舉位數和首位來求解

dp[i][j]表示有i位數,首位是j的情況的種類

**/int main()

ll ans=0;

rep(i,1,k) ///首位不能是0

ans=(ans+dp[l][i])%mod;

printf("%i64d\n",ans);

}return

0;}

演算法訓練 K好數 (DP

問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 輸入包含...

演算法訓練 K好數(dp 動態規劃)

問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 輸入包含...

演算法訓練 K好數

問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 輸入包含...