由于题目本身的数据量较大,依次计算第n项斐波纳契数再进行判断会超时,只能考虑斐波那契数中的循环节,
#include<cstdio>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n%12 == 0)
{
printf("YES\n");
}
else if( n % 4 == 0)
{
printf("3\n");
}
else if( n % 6 == 0)
{
printf("4\n");
}
else
{
printf("NO\n");
}
}
return 0;
}
//斐波纳契数 f(n),存在如下规律,n能被4整除,f(n)能被3整除,
//n能被6整除,f(n)能被4整除,有数论知识得,n能被12整除,f(n)能被12整除。
//lcm(4,6) = 12;