列表

详情


NC215153. 我说这是签到题你信吗?

描述

南宁师范大学计信院的同学非常喜欢编程,以至于很喜欢只含有“b”和“c”的字符串,且字符串中不能出现两个连续的“c”。请你求出有几种长度为n的字符串是计信院同学喜欢的字符串。答案对1000000007取模。

输入描述

输入一个整数n。

1<=n<=100000

输出描述

输出一个整数表示答案。

示例1

输入:

3

输出:

5

说明:

cbb,cbc,bbb,bbc,bcb

示例2

输入:

1

输出:

2

说明:

c,b

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 3ms, 内存消耗: 1088K, 提交时间: 2022-04-30 11:21:24

int main()
{
    long long a[100010];
    a[1]=2;a[2]=3;a[3]=5;
    int n;
    scanf("%d",&n);
    int i=1;
    for(i=4;i<=n;i++)
        a[i]=(a[i-1]+a[i-2]) % 1000000007;
    printf("%ld",a[n]);
    return 0;
}

C++(clang++11) 解法, 执行用时: 6ms, 内存消耗: 1156K, 提交时间: 2021-01-22 17:40:14

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	long long f[10000000];
	f[1]=2;
	f[2]=3;
	for(int i=3;i<=n;i++)
	{
		f[i]=(f[i-1]+f[i-2])%1000000007;
	}
	cout<<f[n]%1000000007;
}

Python3 解法, 执行用时: 71ms, 内存消耗: 8480K, 提交时间: 2022-08-15 21:18:58

n=int(input())
ls=[0]*(n+1)
ls[0], ls[1]=1,2
for i in range(2,n+1):
    ls[i]=((ls[i-1]+ls[i-2]))%1000000007
print(ls[n])

上一题