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. Bioinformatics| 生物医学网络中的图嵌入方法
  2. silverlight1.0绝对是垃圾,中文乱码,没治!
  3. 理解遗传算法循环交叉
  4. cypress 的错误消息 - the element has become detached or removed from the dom
  5. 带用户名和密码的GitHub链接
  6. 计算机学校综合管理系统论文,学校综合管理系统的设计与实现毕业设计论文.doc...
  7. 玩转 SpringBoot 2.x 整合 Mybatis
  8. scp命令报错-bash: scp: command not found
  9. 一个软件公司需要多少前端_内幕!软件外包公司开发一个软件需要多少钱?
  10. python接收邮件内容启动程序_如何使用python获取电子邮件的文本内容?
  11. mysql ,show slave status详解
  12. 产品思维训练 | 经典产品面试题
  13. uni-app ios 添加测试新设备,只需下载描述文件
  14. 探秘Hadoop生态6:Hive技术初探与实践入门
  15. python3根据RGB像素点生成图片
  16. 随机信号的参数估计(AR模型)
  17. Quartus模拟仿真实现简单的CPU逻辑运算单元
  18. Python 爬虫:获取 JS 动态内容——应用宝搜索应用
  19. 急性生理学与慢性健康状况评分
  20. 社会认同:互联网企业家的秘密武器

热门文章

  1. Linux 测试端口的连通性的四种方法
  2. vue接入万达IAM(统一身份认证登录)记录
  3. 如何确定NetApp FAS存储系统是否正常识别到了boot device?
  4. iview离线文档_iView Admin
  5. 百家争鸣,谁主SD-WAN沉浮
  6. 外贸员必不可少的24个实用工具,好用到飞起!!!
  7. PX4——mc_att_control(姿态控制)
  8. 我的算法不可能这么简单—珂朵莉树
  9. 2023前端面试整理合集
  10. 给招聘HR的3个建议,工作招聘必备