Fibonacci数列(数列 取模)

问题描述

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

输入格式

输入包含一个整数n。

输出格式

输出一行,包含一个整数,表示Fn除以10007的余数。

说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

样例输入

10

样例输出

55

样例输入

22

样例输出

7704

数据规模与约定

1 <= n <= 1,000,000。

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
const int N = 1e6+10;
int a[N];
using namespace std;
int main()
{
	int n,i;
	cin>>n;
	a[1] = a[2] = 1;
	for(i = 3; i <= n; i++){
		a[i] = a[i-1]%10007+a[i-2]%10007;
		a[i] = a[i]%10007;
	}
	printf("%d\n",a[n]);
	return 0;
}

  

#include <stdio.h>
int main()
{
    unsigned long s=0,f1=1,f2=1,f3=1,n=0;
    scanf("%d",&n);

     if(n>2)
    for(s=3;s<=n;s++)
    {
         f3=(f2+f1)%10007;
         f1=f2;
         f2=f3;
     }

     printf("%d",f3);
     return 0;
 }

  

原文地址:https://www.cnblogs.com/clb123/p/10573897.html

时间: 2024-09-30 06:17:26

Fibonacci数列(数列 取模)的相关文章

连续取模

哈理工团体赛:problem E . Mod Kim刚刚学会C语言中的取模运算(mod).他想要研究一下一个数字A模上一系列数后的结果是多少.帮他写个程序验证一下. Input 第一行一个整数T代表数据组数. 接下来T组数据,第一行一个整数n,接下来n个数字ai 接下来一行一个整数m,接下来m个数字bi Output 对于每个bi,输出bi%a1%a2%...%an Sample Input Output 1 4 10 9 5 7 5 14 8 27 11 25 4 3 2 1 0 Hint 在

UVA 11582 - Colossal Fibonacci Numbers!(数论)(分治法幂取模)

巨大的斐波那契数! 题目大意:斐波那契数列f[N],给你a,b,n,求f[a^b]%n. 思路:数论题.f[a^b]%n是有周期的,我们求出来这个周期后就可以将简化成f[(a%周期)^b]%周期运用分治法幂取模. 注意用unsigned long long(貌似是 long long的二倍),不然会溢出,又学了一招... 不知道哪的bug,一直改不对,一直,后来捡来别人的和自己一样的代码一改就对了,,, #include<iostream>//UVA #include<cstdio>

UVa 11582 (快速幂取模) Colossal Fibonacci Numbers!

题意: 斐波那契数列f(0) = 0, f(1) = 1, f(n+2) = f(n+1) + f(n) (n ≥ 0) 输入a.b.n,求f(ab)%n 分析: 构造一个新数列F(i) = f(i) % n,则所求为F(ab) 如果新数列中相邻两项重复出现的话,则根据递推关系这个数列是循环的. 相邻两项所有可能组合最多就n2中,所以根据抽屉原理得到这个数列一定是循环的. 求出数列的周期,然后快速幂取模即可. 1 #include <cstdio> 2 #include <iostrea

UVA 11582 Colossal Fibonacci Numbers!(循环节打表+幂取模)

题目链接:https://cn.vjudge.net/problem/UVA-11582 1 /* 2 问题 3 输入a,b,n(0<a,b<2^64(a and bwill not both be zero) and 1<n<1000) 4 计算并输出f(a^b)%n的结果 5 其中f(i)是斐波那契数列 6 7 解题思路 8 所有的结果都是f(i)对n取模,不妨设F(i)=f(i)%n.不难发现当F(i),F(i+1)出现重复的时候,整个序列就开始出现重复. 9 10 所以设周

斐波那契(Fibonacci)数列

/** * 斐波那契(Fibonacci)数列的第一个和第二个数分别为1 和1 ,* 从第三个数开始,每个数等于其前两个数之和(1,1,2,3,5,8,13,……).* 编写一个程序输出斐波那契数列中的前20个数,要求每行输出五个数*/public class Fibonacci { public static void main(String[] args){ int [] a=new int[20]; a[0]=1; a[1]=1; System.out.print(a[0]+"\t&quo

第2章 数字之魅——斐波那契(Fibonacci)数列

斐波那契(Fibonacci)数列 问题描述 递归算法: 1 package chapter2shuzizhimei.fibonacci; 2 /** 3 * Fibonacci数列递归求解 4 * @author DELL 5 * 6 */ 7 public class Fibonacci1 { 8 public static int fibonacci(int n){ 9 if(n<=0) 10 return 0; 11 else if(n==1) 12 return 1; 13 else

ABAP算法题:斐波那契(Fibonacci)数列

斐波那契(Fibonacci)数列是经典的递推关系式定义的数列. 第一项是0,第二项是1,之后的每一项都是前面两项之和. (sap labs面试题,要求用不同的方法在白板上写abap算法...毫无心理准备,第一遍写了一个递归,可能是复杂度不太好,面试官让我再写一个,于是写了如下代码) PARAMETERS: p_number TYPE i OBLIGATORY. DATA : x TYPE i VALUE 0, y TYPE i VALUE 1. " 算法1 CASE p_number. WHE

UVa 11582 Colossal Fibonacci Numbers! 【大数幂取模】

题目链接:Uva 11582 [vjudge] 题意 输入两个非负整数a.b和正整数n(0<=a,b<=2^64,1<=n<=1000),让你计算f(a^b)对n取模的值,当中f(0) = 0,f(1) =  1.且对随意非负整数i.f(i+2)= f(i+1)+f(i). 分析 全部的计算都是对n取模.设F(i) =f(i)mod n, 非常easy发现,F(x)是具有周期性的,由于对N取模的值最多也就N个,当二元组(F(i-1),F(i))反复的时候.整个序列也就反复了.周期i

CodeForces 450B (矩阵快速幂模板题+负数取模)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51919 题目大意:斐波那契数列推导.给定前f1,f2,推出指定第N项.注意负数取模的方式:-1%(10^9+7)=10^9+6. 解题思路: 首先解出快速幂矩阵.以f3为例. [f2]  * [1 -1] = [f2-f1]=[f3]  (幂1次) [f1]  * [1  0]     [f2]      [f2] 于是fn=[f2] *[1 -1]^(n-2)

hdu 3221 Brute-force Algorithm(快速幂取模,矩阵快速幂求fib)

http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序,问funny函数调用了多少次. 我们定义数组为所求:f[1] = a,f[2] = b, f[3] = f[2]*f[3]......f[n] = f[n-1]*f[n-2].对应的值表示也可为a^1*b^0%p,a^0*b^1%p,a^1*b^1%p,.....a^fib[n-3]*b^fib[n-2]%p.即a,b的指数从n=3以后与fib数列