Fibonacci数列求余 C语言
问题描述
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
看完题,如果你想到了递归,恭喜你已经入坑!!!!
看似完美但就是WA的代码:
#include<stdio.h>
#include<algorithm>
int sum(int a)
{
if (a<0)
{
return 0;
}
if(a=1||a==2)
{
return 1;
}
return (sum(a-1)+sum(a-2))%10007;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",sum(n));
return 0;
}

超时啊!!!每一次都需要重新做一次运算,所以可以用数组将已经算出来的数存起来。
#include <stdio.h>
#define MAX 1000020 //注意数组大小
int main()
{
int n;
int i;
int fib[MAX];
scanf("%d",&n);

fib[1]=fib[2]=1;

for(i=3;i<=n;i++)
{
fib[i]=(fib[i-1]+fib[i-2])%10007;
}
printf("%d\n",fib[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;

}

Fibonacci数列求余 C语言相关推荐

  1. Fibonacci数列求余

    题目:Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入n值 输出一行,包含一个整数 ...

  2. Fibonacci数列取余10007

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除 ...

  3. c语言求3个整数的平均数程序,c语言求余(c语言求任意三个数的平均值)

    C语言提供了一个取余数的运算符%,称之为"模"运算符.只有两个整数之间才可以进行模运算!a % b 表示 用b来整除a,商整数,得到余数.如:5%3 = 2 4%3 =13%3 . ...

  4. c语言怎么对大数求余,c语言取余数(c语言怎么求两数的余数)

    C语言提供了一个取余数的运算符%,称之为"模"运算符.只有两个整数之间才可以进行模运算!a % b 表示 用b来整除a,商整数,得到余数.如:5%3 = 2 4%3 =13%3 . ...

  5. C语言散列法求英文字母字符串求余,c语言求余数

    he00692694 2012.10.13 采纳率:48%    等级:13 已帮助:6711人 #include #include void main() { int num,num2;//这里改了 ...

  6. C语言试题五十九之请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。

    1. 题目 请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回. 其中fibonacci数列f(n)的定义为:f(0)=0,f(1)=1,f(n)=f(n ...

  7. c语言求数列的和_例15:C语言求Fibonacci数列的前30个数

    例15:求Fibonacci数列的前30个数.这个数列有以下特点:第1,2两个数为1,1,.从第三个数开始,该数是其前两个数之和.(斐波那契不死神兔) 解题思路:从前两个月的兔子数可以推出第3个月的兔 ...

  8. c语言求fibonacci数列前20,求fibonacci数列的前20个数之和

    使用数组求Fibonacci数列的前20项.要求4项一行输出. 斐波那契数列通项公式:斐波那契数列指的是这样一个数列:1.1.2.3.5.8.13.21.--这个数列从第三项开始,每一项都等于前两项之 ...

  9. 用php递归求fibonacci数列,C++_C语言求Fibonacci斐波那契数列通项问题的解法总结,一:递归实现使用 - phpStudy...

    C语言求Fibonacci斐波那契数列通项问题的解法总结 一:递归实现  使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. 二:数组实现  空间复 ...

最新文章

  1. 对于SD-WAN安全的5个误区
  2. tf.keras.losses.MeanAbsolutePercentageError 损失函数 示例
  3. 「机器学习」彻底搞懂CNN
  4. KVM中virtio实现(九)
  5. Yinchuan-B The Great Wall
  6. python中new方法详解及_Python中new方法的详解
  7. 看完此文再不懂区块链算我输:手把手教你用Python从零开始创建区块链
  8. Linux 内核通知链和例程代码
  9. python开发总结
  10. PostgreSQL\GPDB 多维数据透视典型案例分享
  11. java点击上传上传mysql并显示图片_java + mysql + jdbc实现图片上传
  12. linux根据文件日期批量scp,linux系统批量传输文件(SCP)
  13. 电影购票c语言程序,C语言电影购票系统小样
  14. STM32之提升迷之自信(时钟的制作)
  15. python获取虎牙弹幕_python实现虎牙直播弹幕
  16. CodeForces 283C Coin Troubles 分析+背包思想
  17. uniapp 最接近微信的图片压缩插件 Ba-ImageCompressor
  18. python英文词频统计-Python实现统计英文文章词频的方法分析
  19. Mix-In的译法探讨
  20. Maven中的LastUpdated文件生成原因

热门文章

  1. 因为我是姑娘,所以不想像你一样安逸生活
  2. JDK1.8安装以及环境变量配置(win10)
  3. 暴力美学的终极形态 JAVA Feroce 2评测
  4. IDEA创建Git仓库
  5. python浮点型和整数型转换_Python字符串、整数、和浮点型数相互转换实例
  6. css清除浮动4种方法
  7. java etl工具_一文带你入门ETL工具-datax的简单使用
  8. 下载音乐 python
  9. jeesite实战(三十一)——SSO单点登录
  10. 安卓学习 Day24:ORMLite框架