HDOJ 1021 Fibonacci Again
来源:互联网 发布:linux fg命令 编辑:程序博客网 时间:2024/05/22 23:28
问题 B: Fibonacci Again
时间限制: 1 Sec 内存限制: 16 MB提交: 135 解决: 35
[提交][状态][讨论版]
题目描述
There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).
输入
Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000).
输出
Print the word "yes" if 3 divide evenly into F(n).
Print the word "no" if not
Print the word "no" if not
样例输入
012345
样例输出
nonoyesnonono
提示
刚开始看见1000000这个数就知道不是简单的斐波那契问题,但是不知道怎么处理,后来看了别人的代码,知道了这个是有规律的,就是每八个是一个循环,基于这个,代码如下
#include<stdio.h>
int main()
{
int a[8]={7,11};
int b[8];
int n,i;
for(i=0;i<8;i++)
{
if(i==0||i==1)
b[i]=a[i]%3;
else
{
a[i]=a[i-1]+a[i-2];
b[i]=a[i]%3;
}
}
while(scanf("%d",&n)!=EOF)
{
if(b[n%8]==0)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
还有一种是这样写的
#include<stdio.h>
int a[1000005];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
a[0]=7;
a[1]=11;
if(n<2)
printf("no\n");//简单题要注意特殊数据。
else
{
for(int i=2;i<=n;i++)
{
a[i]=(a[i-1]+a[i-2])%3;
}
if(a[n]%3==0)
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}感觉应该跟上边的原理一样,对3求余一定是0,1,2之间的数,所以为0则为可以整除
个人建议还是理解下边这个,思路更一般些
阅读全文
0 0
- HDOJ 1021: Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- hdoj 1021 Fibonacci Again
- hdoj 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- hdoj 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- 【HDOJ】【1021】Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- HDOJ 1021 Fibonacci Again
- hdoj-【1021 Fibonacci Again】
- HDOJ 1021 Fibonacci Again
- 【poj 3070】Fibonacci
- JQuery DON 导航
- 廖雪峰Python教程阅读笔记——6. 面向对象编程
- intellij配置maven+SSM+redis(三)
- hdu 2048 神、上帝以及老天爷
- HDOJ 1021 Fibonacci Again
- hdu-6130-Kolakoski
- InputSplit&&处理阶段mapReduce【partioner,combiner,shuffle】->reduce
- 全光网络的前世今生
- IO流(五)其他流
- 2017百度之星初赛(B) 1002 Factory(倍增法求LCA)
- Ubuntu 16.04 系统没有声音的解决办法
- JAVA跨平台原理
- 锁及cas的妙用