斐波那契的整除 | ||
| ||
description | ||
已知斐波那契数列有如下递归定义,f(1)=1,f(2)=1, 且n>=3,f(n)=f(n-1)+f(n-2),它的前几项可以表示为1, 1,2 ,3 ,5 ,8,13,21,34…,现在的问题是想知道f(n)的值是否能被3和4整除,你知道吗?
| ||
input | ||
| ||
output | ||
| ||
sample_input | ||
| ||
sample_output | ||
|
首先看n<1000000000,所以直接找循环节。
可以得出如下结论:fn 能被3整除,当且仅当n可以被4整除;fn 能被4整除,当且仅当n可以被6整除(其实我是猜的,猜对了~)
这里处理n被12整除,被4整除,还有被6整除需要斟酌下:先判断被12整除,然后其余的情况再分别判断。
小技巧题,算是对知识点的一个补充吧~
代码如下:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
long long n;
while(scanf("%lld",&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;
}