快速幂以及斐波那契数列的运用
时间:2022-06-17
本文章向大家介绍快速幂以及斐波那契数列的运用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对于求a^n次方,并且得出的数必须取模于2017; 2
#include<iostream>
using namespace std;
#define M 2017
int main()
{
int a = 3;
int r = 1;
int n;
cin >> n;
while(n)
{
if(n&1)
{
r*=a;
}
a = a*a%M;
n/=2;
}
cout << r;
return 0;
}
斐波那契数列 1 1 2 3 5 8……. 第一个:可以发现是后面一个数是前面两个数的和 第二个:从线性代数的角度来看 是有矩阵 1 1 1 0 的幂次积组成 这里根据第二种来做 代码如下
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> vec;
typedef vector<vec> mat;
typedef long long LL;
const int N = 10007;
mat mul(mat a,mat b) //矩阵乘法
{
mat c(a.size(),vec(b[0].size()));
for(int i=0;i<a.size();i++)
{
for(int k=0;k<b.size();k++)
{
for(int j=0;j<b[0].size();j++)
c[i][j] = ( c[i][j] + a[i][k] * b[k][j] ) % N;
}
}
return c;
}
mat solve_pow(mat a,int n) //快速幂
{
mat b(a.size(),vec(a.size()));
for(int i=0;i<a.size();i++)
b[i][i]=1;
while(n>0)
{
if(n & 1)
b=mul(b,a);
a=mul(a,a);
n >>= 1;
}
return b;
}
LL n;
void solve()
{
mat a(2,vec(2));
while(~scanf("%d",&n) && n!=-1)
{
a[0][0]=1,a[0][1]=1;
a[1][0]=1,a[1][1]=0;
a=solve_pow(a,n);
printf("%dn",a[1][0]);
}
}
int main()
{
solve();
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP获取远程http或ftp文件的md5值的方法
- PHP addslashes()函数讲解
- PHP+swoole+linux实现系统监控和性能优化操作示例
- PHP中PCRE正则解析代码详解
- tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
- 使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
- python 抓取知乎指定回答下视频的方法
- 基于python实现计算两组数据P值
- PHP getNamespaces()函数讲解
- OpenCV 使用imread()函数读取图片的六种正确姿势
- PHP simplexml_import_dom()函数讲解
- PHP getName()函数讲解
- Laravel框架集成UEditor编辑器的方法图文与实例详解
- PHP+redis实现的购物车单例类示例
- ThinkPHP3.2.3框架邮件发送功能图文实例详解