当前位置: 首页 > news >正文

蓝桥集训之斐波那契数列

蓝桥集训之斐波那契数列

  • 核心思想:矩阵乘法

    • 将原本O(n)的递推算法优化为O(log2n)

    • 在这里插入图片描述

    • 构造1x2矩阵f和2x2矩阵a

    • 发现f(n+1) = f(n) * a

      • 则f(n+1) = f(1) * an
      • 可以用快速幂优化
  •   #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int MOD = 10000;int f[2];int a[2][2];int n;void mul1(){int res[2];  //res = res*a 求1x2矩阵memset(res,0,sizeof res);for(int i=0;i<2;i++)for(int j=0;j<2;j++)res[i] = (res[i] + f[j] * a[j][i]) %MOD;  //计算f*amemcpy(f,res,sizeof f);}void mul2(){int res[2][2];  //a = a*a 求2x2矩阵memset(res,0,sizeof res);for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++)res[i][j] = (res[i][j] + a[i][k] * a[k][j])%MOD;  //计算a*amemcpy(a,res,sizeof a);}void qmi(int n){while (n)  //快速幂优化{ if(n&1) mul1();  //res = res*a%MODmul2();  //a = a*a%MODn>>=1;}}int main(){while(cin>>n , n!=-1){f[0] = 0,f[1] = 1;  //初始化第0 1项a[0][0] = 0,a[0][1] = 1,a[1][0] = 1,a[1][1] = 1;  //初始化a矩阵qmi(n); cout<<f[0]<<endl;}return 0;}
    
http://www.lryc.cn/news/332262.html

相关文章:

  • 程序员的工资是多少,和曹操有莫大的关系
  • 使用Element Plus
  • 单例(Singleton)设计模式总结
  • LeetCode每日一题之专题一:双指针 ——快乐数
  • Docker Desktop 不支持 host 网络模式
  • Linux网络编程二(TCP图解三次握手及四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)
  • 【云原生篇】K8S之Job 和 CronJob
  • PHP8.3-ZTS版本安装流程以及添加扩展
  • RabbitMQ系统监控、问题排查和性能优化实践
  • 【华为OD机试】根据IP查找城市(贪心算法—JavaPythonC++JS实现)
  • css:阴影效果box-shadow
  • Scala第十九章节(Actor的相关概述、Actor发送和接收消息以及WordCount案例)
  • 蓝桥杯杯赛之深度优先搜索优化《1.分成互质组》 《 2.小猫爬山》【dfs】【深度搜索剪枝优化】【搜索顺序】
  • 软件设计原则:依赖倒置
  • 03-自媒体文章发布
  • Oracle中实现一次插入多条数据
  • 【C++入门】关键字、命名空间以及输入输出
  • 初识MySQL(中篇)
  • 前端订阅后端推送WebSocket定时任务
  • 提高机器人系统稳定性:引入阻尼作为共振后的相位超前
  • 深度学习理论基础(三)封装数据集及手写数字识别
  • vue3+eachrts饼图轮流切换显示高亮数据
  • UTONMOS:AI+Web3+元宇宙数字化“三位一体”将触发经济新爆点
  • 开始焦虑了
  • 数据结构和算法:十大排序
  • LLaMA-Factory微调(sft)ChatGLM3-6B保姆教程
  • Web安全-浏览器安全策略及跨站脚本攻击与请求伪造漏洞原理
  • 蓝桥杯B组C++省赛——飞机降落(DFS)
  • Java 中的 Map集合
  • 基于springboot大学生兼职平台管理系统(完整源码+数据库)