Problem E: 算一算
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 599 Solved: 176
[Submit][Status][Web Board]
Description
1,1,2,3,5.。。这是斐波那契数列,现在huhu要知道第n项能否被3或者4整除
Input
一个数n,表示第n项(1<=n<=500000)
Output
被12 整除输出YES, 否则被3整除输出3,被4整除输出4,都不可以输出NO
Sample Input
4
6
7
Sample Output
3
4
NO
题目大意:根据斐波那契数列判断第n项能否被12整除或被4或3整除,如果能被12整除输出YES,能被3或4整除输出3或4,若都不能整除输出NO.
想法: 一看题目以为是道秒做的题,马上写完了直接枚举的算法,结果超时了,一时不知道怎么做了。后来发现这其实是一道找规律的题,n能被4整除的f(n)能被3整除,n能被6整除的f(n)能被4整除,n能被12整除的f(n)能被12整除。
完整代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
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;
}