藍橋杯 ALGO 3 K好數

2021-10-24 17:38:27 字數 1288 閱讀 6315

問題描述

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