题目描述
[丛雨]发现了一种未知的基因,这种基因的结构十分的奇怪:
只由2种元素构成,为了表示方便,我们用0,1来表示这两种元素。这断基因中可以出现任意的0,1组合,但是绝对不会出现两个连续的1(例如:1000101010 是合法的,10101011是非法的)。
现在你要解决的是,给定一个基因长度 ,请输出有多少种不同的基因排列方法(长度为0排方法为0)。
输入
第一排一个数N表示有N个询问。
以下N排每排一个数K,表示询问长度为K的基因有多少种不同的组合方式。
输出
N排,每排对应一个询问。答案对12345取余。
样例输入 复制
2
1
2
样例输出 复制
2
3
提示
对于30%的数据,保证n<=1000。
对于60%的数据,保证n<=10000。
对于100%的数据,保证0<n<=1000000,k<100000。
sh上AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,f[10000005]={0,2,3};
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
for(int i=3;i<=1000000;i++){
f[i]=(f[i-1]+f[i-2])%12345;
}
cin>>n;
for(;n--;){
cin>>m;
cout<<f[m]<<"\n";
}
return 0;
}
给给个关注吧
1095

被折叠的 条评论
为什么被折叠?



