洛谷 P2193 HXY和序列

2021-08-08 13:13:03 字數 948 閱讀 6468

題目描述

hxy突發奇想,她想要找到乙個正整數序列,滿足序列中所有的數不超過n,序列長度為p,且除了第乙個數外,所有的數都能被前乙個數整除(即是前乙個數的倍數)。很快她找到了乙個這樣的序列。可是她覺得還不夠,想要知道這樣的序列有多少個,可她被驚人的資料範圍嚇怕了。現在她找到了你,請你來幫助她解決這個問題。(因為結果可能會很大,請輸出對1e9+7取模後的值)

輸入輸出格式

輸入格式:

第一行,兩個正整數n,p。

輸出格式:

僅一行,乙個正整數,表示滿足條件序列的個數對1e9+7取模後的值。

輸入輸出樣例

輸入樣例#1:

3 2
輸出樣例#1:

5
輸入樣例#2:

6 4
輸出樣例#2:

39
說明

資料範圍:

對於10%的資料,p=1;

對於30%的資料,1<=n,p<=10;

對於60%的資料,1<=n,p<=500;

對於100%的資料,1<=n,p<=2000。

f[k][i]表示列舉到第k位,值為i的佇列的個數

轉移方程f[k][i*j]=f[k][i*j]+f[k-1][i]

#include

#define tt 1000000007

using namespace std;

int n,m,ans;

int f[2005][2005];

int main()

for (int i=1;i<=n;i++) ans=(ans+f[m][i])%tt;

printf("%d",ans);

return

0;}

洛谷 P2192 HXY玩卡片

hxy得到了一些卡片,這些卡片上標有數字0或5。現在她可以選擇其中一些卡片排成一列,使得排出的一列數字組成的數最大,且滿足被90整除這個條件。同時這個數不能含有前導0,即0不能作為這串數的首位。如果不能排出這樣的數,輸出 1 輸入格式 第一行,卡片的個數n。第二行,分別給出了這n個數 只能為數字5或...

洛谷 P2192 HXY玩卡片

題目描述 hxy得到了一些卡片,這些卡片上標有數字0或5。現在她可以選擇其中一些卡片排成一列,使得排出的一列數字組成的數最大,且滿足被90整除這個條件。同時這個數不能含有前導0,即0不能作為這串數的首位。如果不能排出這樣的數,輸出 1 輸入格式 第一行,卡片的個數n。第二行,分別給出了這n個數 只能...

洛谷P2194HXY燒情侶

傳送門啦 這個題可以說是tarjan強連通分量的裸題,但需要維護每個強連通分量的最小值,所以做法就很明確了。我們先明確幾個陣列的意思 1.首先是tarjan縮點中的幾個陣列 dfn i i點的時間戳 low i 表示這個點以及其子孫節點連的所有點中dfn最小的值 stack,表示當前所有可能能構成是...