【QED】斐波那契游戏

news2024/9/23 7:19:54

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 总结

题目

题目链接🔗

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89…

这个数列从第3项开始,每一项都等于前两项之和。

现在,珍珠和雪豹在玩一个好玩的游戏,首先珍珠给出第一个数字a,雪豹给出第二个数字b,他们约定在第三个数字往后的值都是前两个数字的和,他们一共会写下x个数,现在他们想问你,这x个数的和是多少?
【输入格式】
第一行输入一个T代表有 T ( 1 ≤ T ≤ 1 0 5 ) T(1 \leq T \leq 10^5) T(1T105)个样例
接下来T行输入 1 ≤ a , b ≤ 1 0 9 , 3 ≤ x ≤ 1 0 5 1 \leq a,b \leq10^9 , 3 \leq x \leq10^5 1a,b109,3x105代表一个询问
【输出格式】

对于每个询问输出一行,答案可能很大,请对其 1 0 9 + 7 10^9+7 109+7
输入1:

1
3 7 10

输出1:

781

思路

动态规划计算斐波那契数列:

  1. 初始化斐波那契数列的前两项为 a a a b b b
  2. 使用两个数组 a 和 b 分别存储斐波那契数列的前 x x x 项,其中 a[i] 表示第 i i i 项斐波那契数列的值,b[i] 表示第 i − 1 i-1 i1 项前缀和。
    通过递推关系 a [ i ] = a [ i − 1 ] + a [ i − 2 ] a[i] = a[i-1] + a[i-2] a[i]=a[i1]+a[i2] b [ i ] = a [ i − 1 ] + b [ i − 1 ] b[i] = a[i-1] + b[i-1] b[i]=a[i1]+b[i1] 计算斐波那契数列的前 x x x 项。
  3. 求和并取模操作:根据题目要求,计算斐波那契数列前 x x x 项的和,即 a [ 1 ] + a [ 2 ] + … + a [ x ] a[1] + a[2] + \ldots + a[x] a[1]+a[2]++a[x]。对于数字 a a a,前面 n n n项的和累计个数为 a [ n ] a[n] a[n],对于数字 b b b,前面 n n n项的和累计个数为 b [ n ] b[n] b[n]。由于题目要求对结果进行 1 0 9 + 7 10^9+7 109+7 的取模操作,因此在计算过程中需要对结果进行取模,以避免溢出。
    在这里插入图片描述

代码

#include <iostream>

using namespace std;

typedef long long LL;
const long long mod=(long long)1e9+7;

LL a[1000005],b[1000005];

int main()
{
    int n;
    cin>>n;
    a[1]=1;a[2]=1;
    b[1]=0;b[2]=1;
    for(int i=3;i<1000005;++i)
    {
        a[i]=(a[i-1]+a[i-2])%mod;
        b[i]=(a[i-1]+b[i-1])%mod;
    }
    while(n--)
    {
        LL sum=0;
        LL aa,bb,geshu;
        scanf("%lld%lld%lld",&aa,&bb,&geshu);
        printf("%lld\n",((aa*a[geshu])+(bb*b[geshu]))%mod);
    }
    return 0;
}

复杂度分析

时间复杂度

O ( n ) O(n) O(n)

空间复杂度

O ( n ) O(n) O(n)

总结

预处理+前缀和

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1527080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频技术1:使用ABLMediaServer推流rtsp

ABLMediaServer定位是高性能、高稳定、开箱即用、商用级别的流媒体服务器 下边展示了如何把1个mp3作为输入源&#xff0c;转换为rtsp流的过程。 作用&#xff1a;用rtsp模拟摄像头的视频流 1、启动ABLMediaServer ABLMediaServer-2024-03-13\WinX64\ABLMediaServer.exe 配…

电话机器人语音识别用哪家更好精准度更高。

语音识别系统的选择取决于你的具体需求&#xff0c;包括但不限于识别精度、速度、易用性、价格等因素。以下是一些在语音识别领域表现较好的公司和产品&#xff1a; 科大讯飞&#xff1a;科大讯飞是中国最大的语音识别技术提供商之一&#xff0c;其语音识别技术被广泛应用于各…

Linux的背景介绍

1.Linux的发展史 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff08…

人生就是不断炼心的一个过程,不断continental,不断挑战,重构。

回头看&#xff0c;轻舟已过万重山&#xff0c;早上&#xff0c;使用VSCODE,将以前的bootstrap响应式不断引入新元素。直接全部安装插件。如下图所示。 问题&#xff0c;遇到了github登录问题&#xff0c;还有就是git命令报错&#xff0c;域名hosts,404&#xff0c;nginx等知识…

STM32实验DMA数据搬运小助手

本次实验做的是将一个数组的内容利用DMA数据搬运小助手搬运到另外一个数组中去。 最后的实验结果&#xff1a; 可以看到第四行的数据就都不是0了&#xff0c;成功搬运了过来。 DMA实现搬运的步骤其实不是很复杂&#xff0c;复杂的是结构体参数&#xff1a; 整个步骤为&#xf…

配置视图解析器

配置视图解析器&#xff1a; 我们在指定视图的时候路径是有重复的&#xff0c;重复的操作可以用视图解析器&#xff0c;让框架帮我们&#xff1a; mv.setViewName("/WEB-INF/view/show.jsp");mv.setViewName("/WEB-INF/VIEW/other.jsp"); ​​​​​​​ …

前后端分离项目部署服务器教程--实践成功

文章目录 项目介绍流程1租界云服务2通过远程软件连接服务器3部署前后端代码停止功能文件 环境配置1.安装jdk2.安装Nginx3.安装mysql数据库 花了将近一天部署前后端的项目&#xff0c;写一个日志记录一下&#xff0c;话说孰能生巧。明天把服务器恢复初始在部署一下。 项目介绍 …

五、初识Django

初识Django 五、初识Django1.安装django2.创建项目2.1第一种方式&#xff1a;在终端2.2第二种方式&#xff1a;Pycharm 3.创建app4.快速上手4.1再写一个页面4.2templates模板4.3静态文件4.3.1static目录4.3.2引用静态文件 5.模板语法案例&#xff1a;伪联通新闻中心6.请求和相应…

使用JAXB生成XML的Java对象

文章目录 标题使用JAXB生成XML的Java对象根据xml生成xsd文件&#xff1a;下载trang.jar&#xff1a;使用trang.jar生成xml的xsd文件&#xff1a; 使用JAXB的xjc生成java对象&#xff1a; 标题使用JAXB生成XML的Java对象 根据xml生成xsd文件&#xff1a; 下载trang.jar&#x…

ElasticSearch 用法

首先讲下 ES的倒排序索引 入门-倒排索引 正排索引&#xff08;传统&#xff09; idcontent1001my name is zhang san1002my name is li si 倒排索引 keywordidname1001, 1002zhang1001 正排索引&#xff1a;我想查name&#xff0c;这时候是模糊的查询&#xff0c;会循环遍历…

C++开发基础——函数模板

一&#xff0c;函数模板 1.基础概念 模板编程是C中泛型编程的基础。 一个模板可以是创建类或者函数的蓝图。 模板编程分两种&#xff0c;分别是算法抽象的模板、数据抽象的模板。算法抽象的模板以函数模板为主&#xff0c;数据抽象的模板以类模板为主。 基于函数模板生成的…

合成孔径雷达(SAR)RD算法点目标成像与分析Matlab仿真

文章目录 一、概述二、仿真思路1.概述2.高分3号简介与基本参数 三、回波生成1.卫星运行速度计算2.几何3.信号参数与时间轴生成(1)信号参数(2)时间轴生成 4.点目标回波生成(1)点目标坐标设置(2)回波生成 四、低斜视角处理1.距离压缩2.方位向傅里叶变换3.距离徙动校正4.方位压缩5…

转录因子/组蛋白修饰靶基因数据库:Cistrome DB使用教程

最近有小伙伴经常询问怎么预测转录因子的下游靶基因&#xff0c;以及预测一些组蛋白修饰影响的靶基因信息。今天就给大家介绍一下Cistrome数据浏览器&#xff08;Cistrome Data Browser&#xff09;。 Cistrome DB是来自人类和小鼠的ChIP-seq、ATAC-seq和DNase-seq数据的资源&…

内网穿透利器 n2n 搭建指南

1. n2n 简介 上文实验分析了 FRP 和 Zerotier 的利弊&#xff0c;本文再介绍另一种内网穿透方案&#xff0c;n2n。 n2n 是 C/S 架构的内网穿透服务&#xff0c;不同于 FRP 的 反向代理&#xff0c;它的原理是类似 Zerotier 的先打孔&#xff0c;打孔失败再尝试转发。关于打孔本…

深入理解Netty以及为什么项目中要使用?(二)Reactor模型

Reactor模型 了解了NIO多路复用后&#xff0c;就有必要再和大家说一下Reactor多路复用高性能I/O设计模式&#xff0c;Reactor本质上就是基于NIO多路复用机制提出的一个高性能IO设计模式&#xff0c;它的核心思想是把响应IO事件和业务处理进行分离&#xff0c;通过一个或者多个…

BUUCTF-Ezsql1

1.打开靶机 打开第一个链接 2.万能密码 使用万能密码&#xff1a;a or 1 # 密码为随意 第二个用kali打开 3.ssh连接靶机 ssh ctf284490d0-7600-4c65-9160-5ced02f45633.node5.buuoj.cn -p 28191 由题可知密码为123456 4.找到并修改index.php文件 找到index.php文件 #内容如…

常见排序及查找算法

内容引用自&#xff1a; 【数据结构和算法】十大经典排序算法&#xff08;动图演示&#xff09; 算法复杂度 1、冒泡排序 1.1、动图演示 遍历列表数据&#xff0c;共遍历length(列表)次&#xff0c;每一次的遍历都要从左到右进行两两比对&#xff0c;左边比右边小&#xff0…

机器人路径规划:基于Bug算法的机器人路径规划(提供Python代码)

一、Bug算法简介 Bug 算法是一种基于追踪障碍物的路径规划算法&#xff0c;它模拟了一种昆虫寻找巢穴的行为&#xff0c;因此得名Bug算法。Bug算法的基本思路是&#xff1a;当机器人遇到障碍物时&#xff0c;他会沿着障碍物的边缘行走&#xff0c;直到到达目标点。该算法可以分…

代码随想录算法训练营第二十五天|216.组合总和III,17.电话号码的字母组合

216.组合总和III 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 示例 2: 输入…

深入了解JVM底层原理

一、JVM内存结构 1、方法区&#xff1a;存储编译后的类、常量等&#xff08;.class字节码文件&#xff09; 2、堆内存&#xff1a;存储对象 3、程序计数器&#xff1a;存储当前执行的指令地址&#xff08;计算机处理器&#xff08;CPU&#xff09;正在执行的下一条指令在内存…