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
 
本题类似于HDU_1005:Number Sequence,算是其简化版。根据其思想,我们可以求F(n) = [F(n-1) + F(n-2)] mod 3。容易知道,数列的每项只能在0, 1, 2三个中间取值,因此组合数是9,由鸽巢原理,在10个组合情况中至少出现两对对应相等。换句话说,数列的循环周期至多是9。
可以手算出循环周期,当然亦可以写一个程序来算一下:
#include<stdio.h>
int main(void)
{
int f0 = , f1 = , j = ;
int a[]; for(int i = ; i < ; i++)
{
a[j] = (f0+f1)%;
f0 = f1;
f1 = a[j++];
} for(int i = ; i < ; i++)
printf("%d ", a[i]); return ;
}

输出结果:0 2 2 1 0 1 1 2 0 2。容易看出,循环周期为8,而从第一个数起每隔三个数0便出现一次。

因此,容易写出以下代码:

#include<stdio.h>
int main(void)
{
int n;
while(scanf("%d", &n) != EOF)
{
if((n-)% == )
printf("yes\n");
else
printf("no\n"); } return ;
}

当然,与HDU_1005不同的是,本题的数列的每项是确定的,因此可以打表通过:

#include<stdio.h>
#define MAXN 1000000
int a[MAXN+];
int main(void)
{
a[] = ;
a[] = ;
int n;
for(int i = ; i <= ; i++)
{
a[i] = (a[i-] + a[i-]) % ;
} while(scanf("%d", &n) != EOF)
{
if(a[n] == )
printf("yes\n");
else
printf("no\n");
} return ;
}

或许HDOJ系统测试强度不够吧,这题暴力破解都可以通过:

#include<stdio.h>
int main(void)
{
int f0 = , f1 = , j = , f2;
int a[];
int n;
while(scanf("%d", &n) != EOF)
{
f0 = ;
f1 = ;
for(int i = ; i <= n; i++)
{
f2 = (f0 + f1) % ;
f0 = f1;
f1 = f2;
} if(n == || n == )
printf("no\n");
else if(f2 == )
printf("yes\n");
else
printf("no\n");
} return ;
}

另外,打表的时候要注意,该题不mod3的话,也就是直接存入每项的具体值,然后直接取出求模的方式是不可取的,因为对于1, 1开头的斐波那契数列的第四十余项int类型已经存不下了(可以写个程序测试),这是因为斐波那契数列以接近0.618为底的指数增长。指数可是会爆炸的啊:~

HDU_1021:Fibonacci Again的更多相关文章

  1. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  2. #26 fibonacci seqs

    Difficulty: Easy Topic: Fibonacci seqs Write a function which returns the first X fibonacci numbers. ...

  3. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  4. 斐波拉契数列(Fibonacci) 的python实现方式

    第一种:利用for循环 利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了... >>> fibs = [0,1] >>&g ...

  5. fibonacci数列(五种)

    自己没动脑子,大部分内容转自:http://www.jb51.net/article/37286.htm 斐波拉契数列,看起来好像谁都会写,不过它写的方式却有好多种,不管用不用的上,先留下来再说. 1 ...

  6. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  7. Fibonacci 数列算法分析

    /************************************************* * Fibonacci 数列算法分析 ****************************** ...

  8. 算法系列:Fibonacci

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  9. UVa #11582 Colossal Fibonacci Numbers!

    巨大的斐波那契数 The i'th Fibonacci number f (i) is recursively defined in the following way: f (0) = 0 and  ...

随机推荐

  1. Effective Modern C++ 条款3:理解decltype

    说起decltype,这是个古灵精怪的东西.对于给定的名字或表达式,decltype能告诉你该名字或表达式的型别.一般来说,它告诉你的结果和你预测的是一样的.不过,偶尔它也会给出某个结果,让你抓耳挠腮 ...

  2. 本周汇总 动态rem适配移动端/块状元素居中/透明度

    1.动态rem适配移动端 !function(){ var width = document.documentElement.clientWidth; var head=document.getEle ...

  3. bootstrap--响应式框架页面环境配置

    那就目录结构 页面环境代码: <!DOCTYPE html> <html lang="zh-CN"> <head> <!--默认编码--& ...

  4. CSS--去除除文本基线的几种方式

    削除文本基线的几种方式:1.display:block2.vertical-align:middle3.font-size:0px

  5. [转]了解screen对象的常用视图属性

    前面的话 screen对象基本上只用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素高度和宽度等.每个浏览器中的screen对象都包含着各不相同的属性.本文将详细介绍screen对象的 ...

  6. LR11中web_save_timestamp_param

    时间戳是现在时间减去现在的时间 减去 1970年1月1日0点00 的时间 ,然后换算成毫秒. 所以我们需要借助 web_save_timestamp_param 来实现. web_save_times ...

  7. fiddler替换服务器上文件进行本地调试

    在我们前端开发的日常工作中,发现服务器上某个css/javascript文件有问题,需要修改,那真是家常便饭.通常,我们需要将文件进行修改,然后重新发布再验证,这样就很容易影响到生产环境的稳定性.更普 ...

  8. css3 实现明信片正背面翻转

    <!DOCTYPE html> <html lang="zh-cn" style="width: 100%;height: 100%;"> ...

  9. 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】

    [题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...

  10. 一个宽度不确定的DIV里放三个水平对齐的DIV,左右两个DIV宽度固定为100px,中间那个DIV自适应宽度

    方法一:浮动  注意三个div的位置 <html><head> <meta charset="utf-8"> <style type=&q ...