ポータル
Portal1:Nowcoder
説明
姉妹を超えて本当に彼女が文字だけが好きという、彼女の名前が好き\(\ textrm { "C" } \) と\(\ {textrm "y軸"} \) 。したがってだけのような姉妹を超え含ま\(\ textrm { "C" } \) と\(\ textrm { "Y" } \) 文字列、および文字列は、2つの連続することはできません\(\ textrm { " C「} \) 。どのように長さの多く見つけてください(N \)\文字列は、文字列のように姉妹校を超えています。答(1E9 + 7 \)\剰余を。
入力
整数を入力\(N-を\) 。
\(1 \ N 100000 \ \) 。
出力
出力整数の答え。
サンプル入力
3
サンプル出力
5
サンプル説明
\(\ textrm {CYY、CYC、YYY、YYC、ycy} \) 。
解決
私たちは、列挙して見ることができます
場合\(N = 1 \) 、答えは(2 \)\します:c, y
。
場合\(N = 2 \) 、答えは(3 \)\します:cy, yc, yy
。
場合\(N = 3 \) 、答えは(5 \)\します:cyy, cyc, yyy, yyc, ycy
。
場合\(N = 4 \) 、答えは(8 \)\します:yyyy, yyyc, yycy, ycyy, cyyy, cycy, yccy, ycyc
。
場合\(N = 5 \) 、答えは(13 \)\します:yyyyy, yyyyc, yyycy, yycyy, ycyyy, cyyyy, yycyc, ycyyc, cyyyc, ycycy, cyycy, cycyy, cycyc
。
\(\ cdots \ cdots \)
簡単に加算法則:\(\ TEXTRM {F(I)= F(I - 1)+ F(I - 2)}(X \ GE 3)\)。
以下のために必要なコードが終了したら(N = 1 \)\特許判定時間。
コード
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long LL;
const int mod = 1e9 + 7;
int n;
int main() {
scanf("%d", &n);
if (n == 1) {//特判n = 1的情况
printf("2\n");
return 0;
}
LL x1 = 2, x2 = 3;
for (int i = 3; i <= n; i++) {
LL tmp = x1;
x1 = x2 % mod;
x2 = (x2 + tmp) % mod;//前两项的和
}
printf("%lld\n", x2 % mod);//不要忘记取余
return 0;
}