博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1021 Fibonacci Again
阅读量:4840 次
发布时间:2019-06-11

本文共 1375 字,大约阅读时间需要 4 分钟。

Fibonacci Again

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 58267    Accepted Submission(s): 27275

Problem Description
There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).
 

 

Input
Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000).
 

 

Output
Print the word "yes" if 3 divide evenly into F(n).
Print the word "no" if not.
 

 

Sample Input
0
1
2
3
4
5
Sample Output
no
no
yes
no
no
no
Author
Leojay
 题目链接:
分析:有两种方法:第一种是找规律,除4余2的就输出yes。否则no.这种方法确实很神奇,想不到没关系!先给出第一种方法的AC代码
1 #include
2 int main() 3 { 4 int n; 5 while(scanf("%d",&n)!=EOF) 6 { 7 if(n%4==2) printf("yes\n"); 8 else 9 printf("no\n");10 }11 return 0;12 }

第二种方法,直接取对3取模!

由同余式的基本性质:

1)自反性:a = a( mod m)。

以及同余式的四则运算法则:

1)如果 a =b( mod m)且 c = d( mod m),则 a +c = (b + d)( mod m)。

可知,F(n) = F(n) ( mod m) = ( F(n-1) +F(n-2) )( mod m)。

下面给出AC代码:

 

1 #include 
2 #include
3 using namespace std; 4 int f[1000100]; 5 int main() 6 { 7 f[0]=1; f[1]=2; 8 int n; 9 while(scanf("%d",&n)!=EOF)10 {11 for(int i=2;i<=n;i++)12 {13 f[i] = (f[i-1]+f[i-2])%3;14 }15 if(f[n]%3==0)16 printf("yes\n");17 else18 printf("no\n");19 }20 return 0;21 }

 

 

 

转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/6404504.html

你可能感兴趣的文章
构建执法第二章读后感
查看>>
【收藏】win7打开word每次提示配置解决办法
查看>>
POJ1143 Number Game(DP)
查看>>
等价类划分例子中的些许添加
查看>>
《剑指offer》---斐波那契数列
查看>>
Vue自定义指令(directive)
查看>>
webservice使用注解修改WSDL内容
查看>>
SystemView 破解方法记录
查看>>
【vijos1642】班长的任务
查看>>
JavaScript入门基础(四)
查看>>
校内的hu测(10.5)
查看>>
Windows Forms高级界面组件-使用对话框
查看>>
Objective-C中的深拷贝和浅拷贝
查看>>
超实用的JQuery小技巧
查看>>
设计模式——单例模式 (C++实现)
查看>>
UML和模式应用学习笔记(6)——系统顺序图、系统操作和层
查看>>
Android -- startActivityForResult和setResult
查看>>
1019 General Palindromic Number (20 分)
查看>>
关于c语言中指针的一些理解
查看>>
Expm 2_2 查找中项问题
查看>>