藍橋杯演算法訓練 k好數

2021-08-29 08:00:33 字數 754 閱讀 6046

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

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

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

4 27

資料規模與約定

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

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

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

動態規劃的思想,對於第一位,我們的dp[1][num]=1,dp[1][num] 表示第1位取num時我們的k好數的個數,對於d[i][j]我們只要求出乙個x滿足x!=j-1&&x!=j+1那麼dp[i][j]+=dp[i-1][x]即可。

最後我們累加dp[l][0:k-1]即可求出最終的結果。

#include #include #define rep(i,s,e) for(int i = s;i>k>>l;

long long dp[105][105];

rep(i,0,k) dp[1][i] = 1;

for(int i = 2;i<=l;i++)}}

}long long ans = 0;

rep(i,1,k)

cout<}int main()

演算法訓練 K好數 藍橋杯

演算法訓練 k好數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目...

藍橋杯 演算法訓練 K好數

問題描述 如果乙個自然數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取模後的值。輸入格式 輸入包含...