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

2021-10-23 01:43:19 字數 892 閱讀 9499

題目描述

如果乙個自然數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結尾時的數量。

因此我們第一重迴圈遍歷的是長度,二三重迴圈遍歷的是數字,符合條件累加上就可以了。因為不能含有前導零,所以在初始化的時候應該將dp[1][0]初始化為0.

**如下:

#include

#define ll long long

#define mod 1000000007

using

namespace std;

const

int maxx=

1e2+10;

ll dp[maxx]

[maxx]

;int k,l;

intmain()

}}} ll ans=0;

for(

int i=

0;i) ans=

(ans+dp[l]

[i])

%mod;

cout

}

努力加油a啊,(o)/~

藍橋杯 演算法訓練 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好數 動態規劃

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如果乙個自然數n的 k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求 l位 k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大...