
[每日一题] 66. 客似云来(fib数列公式)
发布日期:2021-05-12 23:14:48
浏览次数:12
分类:精选文章
本文共 1172 字,大约阅读时间需要 3 分钟。
1. 题目来源
链接:
来源:牛客网2. 题目说明
NowCoder开了一家早餐店,这家店的客人都有个奇怪的癖好:他们只要来这家店吃过一次早餐,就会每天都过来;并且,所有人在这家店吃了两天早餐后,接下来每天都会带一位新朋友一起来品尝。
于是,这家店的客人从最初一个人发展成浩浩荡荡成百上千人:1、1、2、3、5…… 现在,NowCoder想请你帮忙统计一下,某一段时间范围那他总共卖出多少份早餐(假设每位客人只吃一份早餐)。输入描述:
测试数据包括多组。
每组数据包含两个整数from和to(1≤from≤to≤80),分别代表开店的第from天和第to天。
输出描述:
对应每一组输入,输出从from到to这些天里(包含from和to两天),需要做多少份早餐。
3. 题目解析
老样子,先准备好斐波那契的数组,然后遍历那一段数组,求出他们的和即可。而第80项斐波那契数列是一个17位数,所以需要用long long来解决问题。
然而这个题还有另一个更有意思的思路。斐波那契数列的的前n项和其实是有一个很有意思的公式,公式推导在这里,根据文章我们能知道,斐波那契数列的前n项和,就是第n+2项的值减1,例如前10项的和143,就是第12项的144 - 1的结果。所以,我们如果要第n项到第m项的和,那么只要求出前m项的和,减去前n - 1项的和,就能得到结果了。例如要求第3项到第5项的和,我们就只需要用前5项的和减去前2项的和,而公式中的减一在这个过程中抵消掉了,也就是结果直接就是第7项的值减去第4项的值,这样我们在操作的时候就更简单了。 就数值而言,第7项是13,第4项是3,差值是10,而2+3+5也是10,结果是正确的。4. 代码展示
// write your code here cpp#includeusing namespace std;int main() { long long fib[100001] = { 0}; fib[0] = 1; fib[1] = 1; for (int i = 2; i <= 100000; ++i) { fib[i] = fib[i - 1] + fib[i - 2]; } int n, m; while (cin >> n >> m) { n -= 1; m -= 1; long long count = 0; for (int i = n; i <= m; ++i) count += fib[i]; cout << count << endl; } return 0;}
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月14日 20时19分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Qt之QImage无法获取图片尺寸(宽和高)
2021-05-12
推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
2021-05-12
Java-类加载过程
2021-05-12
BUU-MISC-认真你就输了
2021-05-12
BUU-MISC-caesar
2021-05-12
【专题2:电子工程师 之 上位机】 之 【36.事件重载】
2021-05-12
【专题3:电子工程师 之 上位机】 之 【46.QT音频接口】
2021-05-12
一文学会JVM常见参数设置+调优经验(JDK1.8)
2021-05-12
一文理解设计模式--命令模式(Command)
2021-05-12
VTK:可视化之RandomProbe
2021-05-12
block多队列分析 - 2. block多队列的初始化
2021-05-12
Java时间
2021-05-12
不编译只打包system或者vendor image命令
2021-05-12
MySQL
2021-05-12
The wxWindows Library Licence (WXwindows)
2021-05-12
leetcode——第203题——虚拟头结点
2021-05-12
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2021-05-12
MySQL----基础及常用命令
2021-05-12
模拟集成:MOS管的工作区小误区(简单版)
2021-05-12