時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
牛牛喜歡這樣的陣列:
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二維陣列dp[i] [j]代表第 i 個數字為 j 時的方案數 有狀態轉移方程 dp[i] [j] = (d[i - 1] [k] (1 <= k <= j || k % j != 0)
暴力遞推有三重迴圈 時間會** 。
那換種方法 遞推 j 的時候可以用 前 i - 1的所有方案數減去 j 的倍數的方案即可。
ac**:
#includeusing namespace std;
int dp[15][100005];
int main()
}if(n == 1)
printf("%d", k);
else
printf("%d", ans);
return 0;
}
牛牛與陣列DP
思路 如果正著計算容易出現遺漏,所以我們只用找 a b a是b的倍數 的方案數,然後用總數減去這個方案數就是答案。思考用dp來解決這個問題,設dp i j 表示長度為 i 的陣列第 i 位為 j 的符合要求的陣列方案數。1 i n 1 j k 邏輯 n個數的陣列,先初始化dp 1 i 1。三重迴圈,...
牛牛與陣列(DP)
牛牛喜歡這樣的陣列 1 長度為n 2 每乙個數都在1到k之間 3 對於任意連續的兩個數a,b,a b 與 a b 0 兩個條件至少成立乙個 請問一共有多少滿足條件的陣列,對1e9 7取模 輸入兩個整數n,k 1 n 10 1 k 100000輸出乙個整數輸入 2 2輸出3輸入 9 1輸出1輸入 3 ...
牛牛與陣列(DP)
牛牛喜歡這樣的陣列 1 長度為n 2 每乙個數都在1到k之間 3 對於任意連續的兩個數a,b,a b 與 a b 0 兩個條件至少成立乙個 請問一共有多少滿足條件的陣列,對1e9 7取模 輸入兩個整數n,k 1 n 10 1 k 100000輸出乙個整數 dp i j 表示前i個序列,第i個位j的時...