一道数列题
小宇认为斐波那契数列是一个非常神奇的数列,他想知道斐波那契数列的第n项能否被3整除。
斐波那契数列:1,1,2,3,5,8……
斐波那契数列递推公式:f1=1,f2=1,fn=fn−1+fn−2
输入格式:
一行包含一个整数n,表示数列第n项(1≤n≤45)
输出格式:
若斐波那契数列的第n项能被3整除,输出'Y',反之输出'N'(不包含单引号)。
#include<iostream>
using namespace std;
long long fei(int n)
{
if(n==1||n==2) return 1;
long long a=1,b=1;
long long next;
for(int i=3;i<=n;i++)
{
next=a+b;
a=b;
b=next;
}
return b;
}
int main()
{
int n;
cin>>n;
if(fei(n)%3==0)
{
cout<<"Y"<<endl;
}
else
{
cout<<"N"<<endl;
}
return 0;
}
关于这道题一开始我定义函数时用的是递归的方法,但5个测试用例只通过了3个,另外两个是运行超时,改成迭代法就都通过了,说明迭代法更保险。