藍橋杯 演算法訓練 K好數 動態規劃

2021-10-07 08:33:35 字數 784 閱讀 7480

資源限制

時間限制: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位取數j的情況下k好數的數目,陣列行數i的上限為位數l,列數j的上限為k-1,計算dp[i][j]只需將前一行列數與當前位置的列數不等於1的陣列元素相加即可,所得結果即為當前位取j時可能得到的所有結果。

以下為實現**及注釋。

#include using namespace std;

int n, m;

int main() }}

} long long sum = 0;

for (int i = 1; i < k; i++)

cout << sum;

}}

藍橋杯 演算法訓練 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取模後的值。輸入輸入包含兩個正...