测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27715. 稳定串(stable)问题描述给定一个长度为n的01串,如果串中任意连续一段为1的子串长度都只为3,则称该串是稳定串,那么,对于长度为n的01串,要保证该01串为稳定串共有多少种方案?例如长度为7的01串中,0000000、1110000、0111000、1110111都是稳定串,而1011100、1111000、1111110则都不是稳定串。

填空题 中等

题目描述

稳定串(stable)

问题描述

给定一个长度为n的01串,如果串中任意连续一段为1的子串长度都只为3,则称该串是稳定串,那么,对于长度为n的01串,要保证该01串为稳定串共有多少种方案?

例如长度为7的01串中,0000000、1110000、0111000、1110111都是稳定串,而1011100、1111000、1111110则都不是稳定串。

输入格式

一行一个整数n,表示01串的长度。

输出格式

仅一行一个整数,表示长度为n的01串中稳定串的数量,由于数量可能很大,仅输出结果模10007的余数即可。

样例输入1

4

样例输出1

3

样例1解释

0000、1110、0111这3个是满足要求的稳定串。

样例输入2

7

样例输出2

7

样例2解释

000000、1110000、0111000、0011100、0001110、0000111、1110111这7个是满足要求的稳定串。

样例输入3

1718

样例输出2

2447

数据规模与约束

对于20%的数据,n≤100。

对于50%的数据,n≤10000。

对于100%的数据,n≤1000000。

参考答案

#include<bits/stdc++.h> using namespace std; int a[1000005]={0,1,1,2,3,4,5,7,10 14},n; int main() { cin>>n; for(int i=5;i<=n;i++) { a[i]=(a[i-1]+a[i-4])%10007; } cout<<a[n]; return 0; }
上一题 下一题