AcWing 1303. 斐波那契前 n 项和

题意:

题解:

这个题解分析的太到位了

代码:

#include<iostream>
#include<cstring>#define ll long longusing namespace std;const int N=3;int n,m;
ll f1[N][N]={{1,1,1}};
ll A[N][N]={{0,1,0},{1,1,1},{0,0,1}
};void mul(ll a[N][N],ll b[N][N])
{ll c[N][N]={0};for(int i=0;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<3;k++)c[i][j]=(c[i][j]+a[i][k]*b[k][j]%m)%m;memcpy(a,c,sizeof c);
}void quick_pow(ll a[N][N],int k)
{ll E[N][N]={    //单位阵{1,0,0},{0,1,0},{0,0,1}};while(k){if(k&1) mul(E,a);mul(a,a);k>>=1;}memcpy(a,E,sizeof E);
}int main()
{cin>>n>>m;quick_pow(A,n-1);mul(f1,A);cout<<f1[0][2]<<endl;return 0;
}

AcWing 1303. 斐波那契前 n 项和相关推荐

  1. 算法提高课-数学知识-矩阵乘法-AcWing 1303. 斐波那契前 n 项和:矩阵乘法,快速幂,线性代数

    题目分析 来源:acwing 分析: 先利用矩阵运算的性质将通项公式变成幂次形式,然后用快速幂的方法求解第 n项. 斐波那契数列的递推公式:f1=f2=1,fn=fn−2+fn−1(n≥3)f_1 = ...

  2. C语言——利用递归函数完成斐波拉契前n项的计算

    C语言,利用函数的方法完成斐波拉契前n项的计算 #include<stdio.h> int fun(int n) {if(n>2){return fun(n-1)+fun(n-2); ...

  3. java求斐波那契前n项和_算法之斐波那契数列如何求第n个值与前n项和?(Java)...

    斐波那契数列 指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n& ...

  4. c语言编程斐波那契前n项,c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)...

    写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include in ...

  5. CCF NOI1064 计算斐波那契第n项

    问题链接:CCF NOI1064 计算斐波那契第n项. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 输入n,编写程序输出斐波那契数列的第n项.其中斐波那契数列f(n)的定义 ...

  6. hdu1568斐波那契前4位

    题意:      就是求斐波那契数,但是只要求输出前四位,(n<=100000000). 思路:      这个要用到斐波那契的公式和一些log的规律,直接打看着很乱,直接在网上偷张图片吧:   ...

  7. python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...

    经典递归 汉诺塔问题 背景故事 传说印度某间寺院有三根柱子,上串64个金盘.寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子:预言说当这些盘子移动完毕,世界就会灭亡.这个传说叫做梵天寺之塔问题( ...

  8. c语言求斐波那契数列n项以及前n项和

    斐波那契数列的定义 f(n)=f(n-1)+f(n-2);     (n>1) n=0;  f(0)=0; n=1;   f(1)=1 自定义函数 递归写法 fbi()此函数求x项的斐波那契数 ...

  9. 求解斐波那契第n项的几种解法(含矩阵乘法+快速幂) Python实现

    斐波那契数列 首先我们来定义一下斐波那契数列: f(n)={0n = 01n = 1f(n−1)+f(n−2)n > 1f(n)= \begin{cases} 0 & \text {n ...

最新文章

  1. 递归实现牛顿法求整数平方根(原理: 给一个初始值(比如X1 = a/2)迭代求a的平方根,设定一个误差限,不断逼近a X1 = a/2 X2 = (X1+a/X1)/
  2. python小数输出01_python:格式化输出(上)
  3. 彻底理解Intel FPGA时序约束---最后总结(三)
  4. Mysql视图与数据备份
  5. spark dataFrame withColumn
  6. [css] 假如设计稿使用了非标准的字体,你该如何去实现它?
  7. navicat for mysql 13_Navicat for MySQL下载
  8. 关于x86、x86_64/x64、amd64和arm64/aarch64
  9. 机器学习基石-作业二-第10题分析
  10. 关于配置环境变量相关解答
  11. 华尔街英语学习软件_华尔街英语吧啦吧啦聊点啥:语言学习交流至上
  12. poj 3126 BFS
  13. 通过机房工作看软工之软工总结
  14. struts2笔记06-ServletXxxAware接口
  15. IDC预测:2021vCPE软硬件市场将达到30亿美元
  16. 歪门邪道破解Flash-SWF to AVI GIF Converter
  17. linux oracle client 安装,Instant Client 下载 适用于 Linux x86-64(64 位)
  18. 华为VLAN隔离配置
  19. 项目开发团队分配管理软件总结
  20. Python开发, 恶意病毒扫描

热门文章

  1. 出这样的题,出题人的良心确定不会痛吗?
  2. 这10个人,总是牛逼的无话可说
  3. oss多线程 上传_oss-android/ios-sdk 断点续传(多线程)
  4. openlayers地图旋转_OpenLayers的使用---- 一个完全免费开源的地图JS库
  5. java树算法_Java数据结构算法(三)树
  6. 读数据库遇到空就进行不下去_如何保证缓存与数据库的双写一致性?
  7. linux select读取节点数据失败_MySQL中覆盖索引查询和select*查询执行结果案例分析...
  8. 7-1 字母统计图 (10 分)(思路+详解)
  9. 岛屿类问题的广度优先深度优先双解法(Leetcode题解-Python语言)
  10. 卡尔曼_卡尔曼估计两步法