BEGIN-4_蓝桥杯_Fibonacci数列
问题描述
Fibonacci数列的递推公式为:Fn=Fn-+Fn-,其中F1=F2=。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 样例输出 样例输入 样例输出 数据规模与约定
<= n <= ,,。
使用递归来计算数列的值
在做题时出现的错:
1.使用递归返回结果的方式计算Fn的值,再做取余运算,
int diui(int n)
{
if (n >= 1 && n <= 2)
{return 1;//F1=F2=1}
return digui(n - 1) + digui(n - 2);
}
结果->当n值大过某值时,计算时间>1s,不合要求
(原因:当数值过大时,由于递归的分支也大,每条分支结果必须等待上一条完成才能进行,所以缓慢)
2.使用递归计算值,结果存放在数组中(Fn-2放在arr[0],Fn-1放在arr[1],Fn放在arr[n]),然后取出Fn做取余运算
void digui(int n,int arr[])
{
if (n >= 1 && n <= 2)
{arr[3] = arr[n];}
if (n > 2)
{
digui(n - 1,arr);
arr[3] = (arr[1] + arr[2]);
arr[1] = arr[2];
arr[2] = arr[3];
}
return ;
}
结果->当n值大过某值时,取出Fn做取余运算数据会异常
(原因:当n达到一定值后会溢出,这时再做取余自然就出错了)
3.使用递归计算值,结果Fn做取余运算后存放在数组中(Fn-2放在arr[0],Fn-1放在arr[1],Fn%余数放在arr[n])
void digui(int n,int arr[])
{
if (n >= 1 && n <= 2)
{arr[3] = arr[n];}
if (n > 2)
{
digui(n - 1,arr);
arr[3] = (arr[1] + arr[2])%N;
arr[1] = arr[2];
arr[2] = arr[3];
}
return ;
}
结果->正确,时间及内存消耗均满足要求
(原因:由于每次计算结果Fn-1和Fn-2都存放在数组中,当计算Fn时直接调用,并做取余后放入数组中,避免Fn的溢出)
BEGIN-4_蓝桥杯_Fibonacci数列的更多相关文章
- 蓝桥杯---波动数列(dp)(背包)(待解决)
问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减 ...
- 蓝桥杯BASIC-13 数列排序
问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整数n. 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000. 输 ...
- BASIC-13_蓝桥杯_数列排序
示例代码: #include <stdio.h>#include <stdlib.h> int main(void){ int n = 0 ; int i = 0 , j = ...
- BASIC-4_蓝桥杯_数列特征
示例代码: #include <stdio.h>#include <stdlib.h> int main(void){ int n = 0 ; int i = 0 , max ...
- [蓝桥杯] Fibonacci数列 入门
原题链接 import java.util.Scanner;//导入Scanner类 public class Main { public static void main(String[] args ...
- [18/12/3]蓝桥杯 练习系统 入门级别 Fibonacci数列求模问题 题解思路
前言略. 看到这个题目本来应该很高兴的,因为什么,因为太TM的基础了啊! 可是当你用常规方法尝试提交OJ时你会发现..hhh...运行超时..(开心地摇起了呆毛 //Fibonacci数列递归一般问题 ...
- 蓝桥杯-入门训练 :Fibonacci数列
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1.当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n. ...
- 第八届蓝桥杯JavaB组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推 ...
- 2012年 蓝桥杯预赛 java 本科 题目
2012年 蓝桥杯预赛 java 本科 考生须知: l 考试时间为4小时. l 参赛选手切勿修改机器自动生成的[考生文件夹]的名称或删除任何自动生成的文件或目录,否则会干扰考试系统正确采集您的解答 ...
随机推荐
- 三个安装,手机看VIP电影。写给亲爱的学习
三个安装,看VIP电影. 市场安装firefox 安装Tempermonkey 打开firefox,点击右上角的三个点,点击附加组件 继续点击浏览全部firefox附加组件 在上面的搜索框输入 tam ...
- Linux内核分析-使用gdb跟踪调试内核从start_kernel到init进程启动
姓名:江军 ID:fuchen1994 实验日期:2016.3.13 实验指导 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/a ...
- STL_容器_删除
1.erase()函数 用于删除由迭代器指定的元素,或者一个区间. 2.clear()函数 用于删除容器中所有元素 3.remove()函数 用于删除指定的元素,无需知道元素在容器的哪个位置,会删除掉 ...
- Tomcat 域名绑定多个Host配置要点
一.在server.xml中添加Host节点,name就是需要绑定的域名,多个域名在Host节点下建立<Alias></Alias>子节点,可建立多个. <Engine ...
- Swift网络封装库Moya中文手册之Endpoints
Endpoints Endpoint是一种半私有的数据结构,Moya用来解释网络请求的根本构成.一个endpoint储存了以下数据: The URL. The HTTP method (GET,POS ...
- rim
“也许我们需要一些药物了”卡拉米走回他的研究室 不去看他最好的朋友的尸体. 过了今晚,他的血肉会被工虫分解. 播种机会犁过他的骨殖,种下土豆与甜菜. 索斯蹲下,不禁思考 生与死在这里太过平常 这是他们 ...
- L2-003. 月饼(贪心)
L2-003. 月饼 简单的结构体和排序应用题 #include<iostream> #include<stdio.h> #include<algorithm> u ...
- P1174 互素
P1174 互素 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 对于某个数n,,我们这次的工作仅是求出小于n且和n互质的数的个数,,比如n=10时 1,3, ...
- MySQLzip压缩文件格式安装教程
MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe,面对一堆文件一头雾 ...
- tensorflow中屏蔽输出的log信息方法
tensorflow中可以通过配置环境变量 'TF_CPP_MIN_LOG_LEVEL' 的值,控制tensorflow是否屏蔽通知信息.警告.报错等输出信息. 使用方法: import os imp ...