演算法訓練 k好數
時間限制:1.0s 記憶體限制:256.0mb
問題描述
如果乙個自然數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[i][j],其中 i 表示總共有多少位(i<=l),j 表示最後面那個數字(j我們是這樣動態規劃的:
總共1位: 全部初始化為1,方便dp[2][j] 規劃。
總共2位:...... (還是直接看下面的陣列吧)。
當輸入:>> 4 2 時,如下:(行i01
2311
1112
3223
所以:7 = 2 + 2 + 3
因為每次加一位時都是加在最開始的一位,所以最後計算結果的時候沒有將dp[l][0]加進去。
1 #include 2#define n 1000000007
3#define ll long long int
4using
namespace
std;
5int
k,l;
6int dp[105][105];7
intmain()
1920 ll sum = 0;21
for(int i=1;i)
25 cout26return0;
27 }
演算法訓練 K好數
問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 輸入包含...
演算法訓練 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好數
演算法訓練 k好數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目...