牛牛喜歡這樣的陣列:
1:長度為n
2:每乙個數都在1到k之間
3:對於任意連續的兩個數a,b,a<=b 與(a % b != 0) 兩個條件至少成立乙個
請問一共有多少滿足條件的陣列,對1e9+7取模
輸入兩個整數n,k1 ≤ n ≤ 10
1 ≤ k ≤ 100000
輸出乙個整數示例1
複製
2 2
複製
3
示例2複製
9 1
複製
1
示例3複製
3 3
複製
15
示例4複製
2 1234
複製
1515011
#pragma gcc optimize(2)#include#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;//
c(n,k)*c(m,k)*k!
inline int
read()
while(ch>='
0'&&ch<='9')
return x*f;
}const
int maxn=1e5+10
;const
int mod=1e9+7
;int dp[20
][maxn];
intmain()
for(int i=2;i<=n;i++)
for(int j=1;j<=m;j++)
dp[i][j]+=(sum-sum1)%mod;}}
ll ans=0
;
for(int j=1;j<=m;j++)
printf(
"%lld
",ans);
} /*
題意:求乙個長度為n的陣列,滿足用1-k的數組成前乙個小於等於後乙個或後乙個不是前乙個的倍數的條件
有多少種,模1e9+7
思路:當前乙個數小於等於後乙個數時,即使後乙個數是前乙個數的倍數也是可以成立的
(兩個條件只需滿足乙個),但只有當前乙個數大於後乙個數且前乙個數是後乙個數的倍數時,
此方案才不成立,
注意到不成立的方案數條件更少,所以用總方案數減去不成立的方案數求解時更容易,
故設dp[i][j]為當前長度為i的陣列末尾是j的方案數,當陣列長度為1時,k種數的方案數都為1種,
當長度i大於等於2時,若要在末尾加入數j,則用i-1長度的陣列從1到k的方案數之和
減去i-1時大於j的j的倍數的方案數即使長度為i時末尾加入j的方案數,
最後計算長度為n的陣列從1到k的方案數之和即為答案,注意計算時要模1e9+7
*/
牛客 牛牛的數列
鏈結 牛牛的數列 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 牛牛現在有乙個n個數組成的數列,牛牛現在想取乙個連續的子串行,並且這個子串行還必須得滿足 最多隻改變乙個數,就可以使得這個連續的子串行是乙個嚴格上公升...
牛客網 牛牛找工作
時間限制 2秒 空間限制 65536k 為了找到自己滿意的工作,牛牛收集了每種工作的難度和報酬。牛牛選工作的標準是在難度不超過自身能力值的情況下,牛牛選擇報酬最高的工作。在牛牛選定了自己的工作後,牛牛的小夥伴們來找牛牛幫忙選工作,牛牛依然使用自己的標 准來幫助小夥伴們。牛牛的小夥伴太多了,於是他只好...
牛客網 牛牛的數列
題目描述 牛牛現在有乙個n個數組成的數列,牛牛現在想取乙個連續的子串行,並且這個子串行還必須得滿足 最多隻改變乙個數,就可以使得這個連續的子串行是乙個嚴格上公升的子串行,牛牛想知道這個連續子串行最長的長度是多少。一開始看到這個題,總是被繞進 改變乙個數 中,就想說是不是遍歷陣列,然後每個數都嘗試改變...