蓝桥 入门训练 Fibonacci数列
2015-11-30 13:14
351 查看
问题描述
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。
心得:当n比较大时,Fn也非常大,不需要先计算出Fn的准确值。
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。
心得:当n比较大时,Fn也非常大,不需要先计算出Fn的准确值。
#include<stdio.h> int main() { int n,i; scanf_s("%d", &n); int F1, F2; F1 = 1; F2 = 1; for (i = 0; i < n - 2; i+=2) { F1 = F1 + F2; F2 = F2 + F1; if (F2 >= 10007) { F1 %= 10007; F2 %= 10007; } } if (n % 2 != 0) printf("%d", F1); else printf("%d", F2); return 0; }
相关文章推荐
- 黑马程序员——OC学习——基础语法二
- Android权限列表permission说明 (一)
- Genero SQL Performance
- mysql 连表查询结果集图解
- http协议
- Python实现单隐层神经网络
- vagrant
- 5天不再惧怕多线程——第一天 尝试Thread
- 全功能智能车之CCD液晶显示定时器触发ADC 触发DMA传输(CCD补充篇)(第十六篇)
- iOS开发-基础:MD5加密算法
- 实验五通讯协议设计报告
- Android中Bitmap和Drawable详解
- jquery获得焦点按下enter键清除文本框
- OpenFileDialog - 设置 - Filter 笔记
- DLL共享数据
- 关于游戏中的分享之ShareSDK的研究续一
- 我的图像处理领域收藏网站
- POJ 2932 (扫描线)
- SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)
- Bmob文档阅读5-支付快速入门