藍橋杯演算法訓練(三) K好數

2021-08-15 10:40:46 字數 870 閱讀 9785

問題描述

如果乙個自然數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。

此題解法採用dp規劃,即從總體到區域性分析。例如:若k = 4,l = 3的話。長度為3,首位為0(最後並沒有算上,因為首位為0的3位數實際是兩位數,所以最後從第l行的,第1列開始統計數目)的k好數等於長度為2,首位為2和3的兩組數之和;長度為3,首位為1的k好數等於長度為2,首位為3的數目。由此可初步遞減,直到長度為1的數。在這裡我們用陣列dp[i][j]來記錄數目,i為長度,j為首位。

**如下:

#include

#include

#define mod 1000000007

int dp[105][105];

int main()

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

} }

}  for(i = 1;i

sum += dp[l][i];

sum %= mod;

} printf("%d",sum);

return 0; }

演算法訓練 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取模後的值。輸入格式 輸入包含...