問題描述
如果乙個自然數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%的資料,k
l<=1
06
k^l <= 10^6
kl<=1
06;對於50%的資料,k <= 16, l <= 10;
對於100%的資料,1 <= k,l <= 100
分析
分解為三個小問題:
① 將 i
ii 的k進製表示存入陣列,i∈[
kl−1
,kl)
i\in[k^,k^l)
i∈[kl−
1,kl
);② 判斷陣列中元素是否有 i+1>i (i=0,1,…) 的情況(即判斷是否為k好數);
③ 取模輸出。
c++**
//執行超時
//**長度:652b
//記憶體使用:2.460mb
//得分:30
#include
using
namespace std;
vector<
int>a;
//將形參 i轉換成 k進製下的表示,並存入陣列a
void
transfer
(int i,
int k)
while
(i>=k)
; a.
push_back
(i);
}//判斷是否有相鄰兩位是相鄰數字
intjudge()
return1;
}int
main()
cout
}
tips
一、盡量避免使用pow這種指數級函式,防止超時
藍橋杯 ALGO 3 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個。由於這個數目...
藍橋杯ALGO 3 K好數(dp)
問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 輸入包含...
藍橋 ALGO 3 K好數
問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 輸入包含...