蓝桥杯 10. 安全序列
当然可以,以下是整理后的 Markdown 格式题目描述:
题目描述
小蓝是工厂里的安全工程师,他负责安放工厂里的危险品。
工厂是一条直线,直线上有 n
个空位,小蓝需要将若干个油桶放置在这 n
个空位上。每 2 个油桶中间至少需要 k
个空位隔开。
现在小蓝想知道,有多少种放置油桶的方案。你可以编写一个程序帮助他吗?
由于这个结果可能非常大,你的输出结果需要对 10^9 + 7
取模。
输入格式
- 第一行包含两个正整数
n
和k
,分别表示空位数量和每两个油桶之间至少要隔开的空位数。
输出格式
- 输出共 1 行,包含 1 个整数,表示放置油桶的方案数,对
10^9 + 7
取模。
样例输入
4 2
样例输出
6
说明
使用 0
表示不放油桶,1
表示放油桶。
合法的 6 种放置方案如下:
0000
1000
0100
0010
0001
1001
数据范围
1 ≤ n ≤ 10^6
1 ≤ k ≤ n
c++代码
#include<bits/stdc++.h>using namespace std;int main() {int n, k, mod = 1e9 + 7;cin >> n >> k;vector<int> dp(n + 1, 0);for (int i = 1; i <= n; i++) {dp[i] += (i - k - 1 >= 1) ? dp[i - k - 1] : 1;//放dp[i] += (i - 1 >= 1) ? dp[i - 1] : 1;//不放dp[i] %= mod;}cout << dp[n];return 0;
}//by wqs