POJ3070 斐波那契数列 矩阵快速幂
题目链接:http://poj.org/problem?id=3070
题意就是让你求斐波那契数列,不过n非常大,只能用logn的矩阵快速幂来做了
刚学完矩阵快速幂刷的水题,POJ不能用万能头文件是真的烦
#include<iostream>
#include<string.h>
#include<cmath>
#include<cstdio>
using namespace std;
typedef long long ll;
const int inf=<<;
const int maxn=1e5+;
const double pi=acos(-);
const int mod=;
struct matrix{
ll a[][]; //begin with 1
int r,c;
matrix(int n,int m):r(n),c(m){memset(a,,sizeof(a));}
ll* operator[](int x){return a[x];}
friend matrix operator*(matrix A,matrix B)
{
matrix C(A.r,B.c);
for(int i=;i<=A.r;i++)
for(int j=;j<=B.c;j++)
for(int k=;k<=A.c;k++){
C[i][j]+=(A[i][k]*B[k][j])%mod;
C[i][j]+=mod;
C[i][j]%=mod;
}
return C;
}
}; matrix qpow(matrix A,ll m)//方阵A的m次幂
{
matrix ans(A.r,A.c);
for(int i=;i<=A.r;i++) ans.a[i][i]=; //单位矩阵
while(m)
{
if(m&)ans=ans*A;
A=A*A;
m>>=;
}
return ans;
}
/*inline void read(ll &x){
char ch=x=0;
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
x=x*10+ch-'0',ch=getchar();
}*/
int main(){
ll n;
while(~scanf("%lld",&n)){
if(n==-)break;
if(n==){
cout<<<<endl;continue;
}
matrix a(,);
a[][]=,a[][]=,a[][]=,a[][]=;
matrix x1(,);
x1[][]=,x1[][]=;
matrix ans=qpow(a,n-)*x1;//0cout<<233<<endl;
printf("%d\n",ans[][]%);
}
return ;
}
POJ3070 斐波那契数列 矩阵快速幂的更多相关文章
- HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- hdu4549 M斐波那契数列 矩阵快速幂+快速幂
M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的 ...
- 洛谷P1962 斐波那契数列(矩阵快速幂)
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...
- 51nod1242 斐波那契数列 矩阵快速幂
1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 #include<stdio.h> #define mod 100000000 ...
- hdu 4549 M斐波那契数列 矩阵快速幂+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Problem ...
- POJ 3070 Fibonacci【斐波那契数列/矩阵快速幂】
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17171 Accepted: 11999 Descr ...
- poj3070 (斐波那契,矩阵快速幂)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9630 Accepted: 6839 Descrip ...
- hdu 4549 M斐波拉契 (矩阵快速幂 + 费马小定理)
Problem DescriptionM斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在 ...
- 洛谷- P1306 斐波那契公约数 - 矩阵快速幂 斐波那契性质
P1306 斐波那契公约数:https://www.luogu.org/problemnew/show/P1306 这道题目就是求第n项和第m项的斐波那契数字,然后让这两个数求GCD,输出答案的后8位 ...
随机推荐
- da5_random模块
import random #标准模块,用来取随机数 print(random.randint(1,100)) #随机取一个整数,顾头顾尾 print(random.uniform(1,900)) # ...
- 目标检测(五)YOLOv1—You Only Look Once:Unified,Real-Time Object Detection
之前的目标检测算法大都采用proposals+classifier的做法(proposal提供位置信息,分类器提供类别信息),虽然精度很高,但是速度比较慢,也可能无法进行end-to-end训练.而该 ...
- android 知识汇总
1.assets:不会在R.java文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中, 2 ...
- docker小结
docker命令汇总 https://www.cnblogs.com/andy9468/p/10762742.html docker概述 https://www.cnblogs.com/andy946 ...
- Kali2安装完成后的设置
1.安装中文输入法 vim /etc/apt/sources.list 全部删除,改为国内源 #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling ...
- 2018-2019-2 20175211 实验一《Java开发环境的熟悉》实验报告
目录 代码托管 一.命令行下Java程序开发 二.IDEA下Java程序开发.调试 (1)建立与Git的链接 (2)开发.调试程序 (3)上传代码至码云 三.练习 四.问题及解决 五.学习总结 代码托 ...
- JAVA微信公众号网页开发 —— 接收微信服务器发送的消息
WeixinMessage.java package com.test; import java.io.Serializable; /** * This is an object that conta ...
- OfficeOpenXml:World、Excel导出导入库
基础库:EPPlus 根据模版:OfficeOpenXml.Entends
- ASP.NET Core 之 Identity
Claims:声明(证件单元)Identity:身份Principal:当事人Authentication :认证Authorization:授权 http://www.cnblogs.com/sav ...
- Python学习笔记(1)__name__变量
这是我在网上找到的一篇文章的标题. 本着学会了才是自己的,所以标题不变,自己试着再写一遍. 问题:__name__是什么? 背景:在学习编程规范的时候,我被要求函数的调用只能在__main()函数中使 ...