HDOJ1021题 Fibonacci Again 应用求模公式

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

应用求模公式
(1) (a + b) % p = (a % p + b % p) % p
(2) (a - b) % p = (a % p - b % p) % p
(3) (a * b) % p = (a % p * b % p) % p
(4) a ^ b % p = ((a % p)^b) % p
如果不用的话会溢出。
代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
using namespace std;

int main()
{
    int a[1000001],i,j,s;
    a[0]=7;a[1]=11;
    for(i=2;i<1000001;i++)
    {
        a[i]=(a[i-1]%3+a[i-2]%3)%3;//只写最后那个%3也可以
    }
    while(~scanf("%d",&s))
    {
        if(a[s]%3==0)
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}
时间: 2024-10-29 23:09:21

HDOJ1021题 Fibonacci Again 应用求模公式的相关文章

取模运算--1对256求模的值是多少

问题描述 -1对256求模的值是多少 RT 这个的结果是不是跟机器相关? 或者根据不同的标准有不同的答案? 新手问题,请知道的大神能不吝赐教,谢谢 解决方案 楼下的素质真差 ...没人回答,算了,关闭问题 解决方案二: 是250 250 250 250

vc++-这题咋破,求大神帮帮忙啊

问题描述 这题咋破,求大神帮帮忙啊 C++编程,求两坐标点的距离 解决方案 缺少缺省构造函数.要么加个缺省构造函数.要么注释掉第十六行的Location l1l2; 解决方案二: 看一下,大神输出出问题了 解决方案三: 第二行,nath.h是什么鬼?

c++的问题-PAT(basic level)1023题组个最小数求找错误

问题描述 PAT(basic level)1023题组个最小数求找错误 题目如下: 给定数字0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意0不能做首位).例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558. 现给定数字,请编写程序输出能够组成的最小的数. 输入格式: 每个输入包含1个测试用例.每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0.数字1.--数字9的个数.整数间用一个空格分隔.10个数字的

c++acm问题-c++题的一道题求两1000位数以内的和

问题描述 c++题的一道题求两1000位数以内的和 不知道为什么AC不了 ![CSDN移动问答][1] [1]: http://acm.hdu.edu.cn/showproblem.php?pid=1002 这是问题要求 这是我的代码 用的是vs2012#include using namespace std; int main( ){ int t; cin>>t; for (int i=1;i<=t;i++) { char a[1001]b[1001]c[1003]; cin>&

求指教公式或语法解析的思路

问题描述 求指教公式或语法解析的思路 最近有个项目,需要对报表里的数据进行有效性验证,但是因为报表项目存在动态变化,所有对应的验证规则也是变化的,就需要单独为报表项编写验证规则. 规则示例如: A=A301,B=A302 //A301,A302代表不同报表 A[1] = A[2]#A[8] // A[1]的数据 等于 A[2]至A[8]的和 //执行循环 Y从1到4,步长为1 DO Y = 1,4,1 A[1,Y] = A[2,Y] + A[5,Y] END DO 诸如此类的规则解析,求一个思路

c#中一个复数求模程序的异常处理的疑问

问题描述 c#中一个复数求模程序的异常处理的疑问 最近在用c#写一个复数类,其中要用到一个复数求模的运算.在网上找到了一些示例代码,但是不知道为什么要这么写.我自己的代码和示例代码都贴出来: public double Abs2() { double result = Math.Sqrt(this.real * this.real + this.imag * this.imag); return result; } public double Abs() { double x = Math.Ab

指针-C++ 数组整体求模问题,求指导

问题描述 C++ 数组整体求模问题,求指导 现在有一个16000的复数指针complex,将它理解为一个二维数组 Rn = complex[n][0]是实部,In = complex[n][1]是虚部,(n=0,1,2,3......15999),我想求这个复数的模 也就是 根号(Rn^2+In^2) (求复数的绝对值也是求模,这样最好)并赋值给double *comp,怎么算,不能使用循环,因为太慢了,想找一个快速算法,最好使用已有的内置函数或者其他库函数,C/C++算法,请求大神知道啊 解决

计算机二级-六题怎么做,求大神帮忙

问题描述 六题怎么做,求大神帮忙 选D求解答计算机二级-六题怎么做,求大神帮忙-求ps大神帮忙p图"> 解决方案 把省略的大括号补回去,可以比较清楚地看见原因 原代码: for( i=0; i<4; i++, i++) for(k=1; k<3; k++); printf("*"); 补回缺省的大括号: for( i=0; i<4; i++, i++){ for(k=1; k<3; k++){ ; } } printf("*"

Lua中关于求模与求余的区别介绍_Lua

我觉得很多人搞不清楚这两个概念的区别,刚好在翻译lua手册时遇到%与math.fmod这两个操作,顺便做一下说明吧. 求模与求余的区别. 假设对a与b两个整数做求模或求余操作.那么第一步是先求整数商c,即a / b的值,第二步是计算模或余数:a - c * b.求模与求余的区别在于怎么处理a / b的值. 求模运算时,a / b的结果向无穷小方向舍入,求余运算时a / b的结果向0方向舍入. 因此,求模时结果的符号与b一致,求余时结果的符号与a一致. 在Lua中4%(-3)等于-2,由此可以看出