开始直接想到递归,发现超时
#include <iostream>
#include<math.h>
using namespace std;
int Fibonacci(int n,int sum)
{
if(n==0)
{
return sum+7;
}
else if(n==1)
{
return sum+11;
}
if(n>1)
{
return Fibonacci(n-1,sum)+Fibonacci(n-2,sum);
}
}
int main(int argc, char** argv) {
int n=0;
int sum=0;
int sum1=0;
while(cin>>n)
{
sum1=Fibonacci(n,sum);
if(sum1%3==0)
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}
}
}
后来把值打出来
代码:
#include <iostream>
#include<math.h>
using namespace std;
int Fibonacci(int n,int sum)
{
if(n==0)
{
return sum+7;
}
else if(n==1)
{
return sum+11;
}
if(n>1)
{
return Fibonacci(n-1,sum)+Fibonacci(n-2,sum);
}
}
int main(int argc, char** argv) {
int n=0;
int sum=0;
int sum1=0;
for(int i=0;i<100;i++)
{
sum1=Fibonacci(i,sum);
if(sum1%3==0)
{
cout<<i<<" "<<"yes"<<endl;
}
else
{
cout<<i<<" "<<"no"<<endl;
}
}
}
发现当N=45时计算机已经运行不动了而且yes出现的频率及其有规律。当(n-2)%4==0时能够出现yes,便把代码改为:
#include <iostream>
#include<math.h>
using namespace std;
int main(int argc, char** argv) {
int n=0;
while(cin>>n)
{
if((n-2)%4==0)
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}
}
}
已经AC