最近做了关于斐波那契数列的一个题目,最后用传统的算法提交,因为·超时没有通过。借鉴了其他大佬的答案之后才发现原来是找规律。。
题目:

这是超时的做法
#include<iostream>
using namespace std;
int Fib(int n)
{
int a = 7, b = 11;
if (n == 0)
return a;
else if (n == 1)
return b;
else
return Fib(n - 1) + Fib(n - 2);
}
int main()
{
int n;
while (cin >> n)
{
int f = Fib(n);
if (f % 3 == 0)
cout << "yes"<< endl;
else
cout << "no"<< endl;
}
}
正确做法
#include<iostream>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
if (n% 4 == 2)
cout<< "yes" << endl;
else
cout<< "no" << endl;
}
}
题解:通过超时的做法看出符合条件的都是以4为周期余2.