演算法訓練 K好數

2022-02-18 06:13:38 字數 1025 閱讀 6818

演算法訓練 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個。由於這個數目...