題目描述
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,表示當前所有可能能構成是...