hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)
M斐波那契数列
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )
#include<stdio.h>
#define mod 1000000007
typedef __int64 LL;
struct Matrix
{LL mat[2][2];
};Matrix unit_matrix =
{1, 0,0, 1
}; //单位矩阵Matrix mul(Matrix a, Matrix b) //矩阵相乘
{Matrix res;for(int i = 0; i < 2; i++)for(int j = 0; j < 2; j++){res.mat[i][j] = 0;for(int k = 0; k < 2; k++){res.mat[i][j] += a.mat[i][k] * b.mat[k][j];res.mat[i][j] %= 1000000006;}}return res;
}Matrix pow_matrix(Matrix a, LL n) //矩阵快速幂
{Matrix res = unit_matrix;while(n != 0){if(n & 1)res = mul(res, a);a = mul(a, a);n >>= 1;}return res;
}LL pow(LL a, LL n) //二分快速幂
{a %= mod;LL res = 1;while(n != 0){if(n & 1)res = res * a % mod;a = a * a % mod;n >>= 1;}return res;
}int main()
{LL a, b, n;Matrix tmp;tmp.mat[0][0] = 0;tmp.mat[0][1] = tmp.mat[1][0] = tmp.mat[1][1] = 1;while(~scanf("%I64d%I64d%I64d",&a,&b,&n)){Matrix p = pow_matrix(tmp, n); //p.mat[0][0]即为F(n-1),p.mat[1][0]即为F(n)LL ans = (pow(a, p.mat[0][0]) * pow(b, p.mat[1][0])) % mod;printf("%I64d\n",ans);}return 0;
}
hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)相关推荐
- HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Li ...
- hdu 4549 M斐波那契数列(矩阵乘法+降幂公式)
Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...
- HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)
ps:今天和战友聊到矩阵快速幂,想到前几天学长推荐去刷矩阵专题,挑了其中唯一一道中文题,没想到越过山却被河挡住去路... 题目链接:[kuangbin带你飞]专题十九 矩阵 R - M斐波那契数列 T ...
- HDU 4549 M斐波那契数列
数论:当gcd(x,m)=1时,x^(m-1) mod m=1, #include <iostream> #include <cstdio> #include <algo ...
- ZYH的斐波那契数列【线段树动态开点+矩阵快速幂求斐波那契】
描述 ZYH最近研究数列研究得入迷啦! 现在有一个斐波拉契数列(f[1]=f[2]=1,对于n>2有f[n]=f[n-1]+f[n-2]), 但是斐波拉契数列太简单啦,于是ZYH把它改成了斐波拉 ...
- python斐波那契数列前20项_Python初学者笔记:打印出斐波那契数列的前10项
问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.- ...
- 求斐波那契数列的第n项
提要 本文介绍了4种(3种?)求斐波那契数列第n项的方法. 斐波那契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda ...
- 奶牛家族(斐波那契数列的快速幂乘矩阵算法)
TX面试题: 已知有一头牛4年后开始生小牛,一次只能生一只,问20年后一共有多少头牛? 这种问题就是简单的递归: 这头奶牛在第四年后能不断生子直到第二十年,其子出生4年后又能不断生子-- 代码如下: ...
- c语言斐波那契数列前20项和,,c语言利用数组求斐波那契数列的前20项
推荐回答 一.斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711 ...
最新文章
- java gc种类_Java GC系列(3):垃圾回收器种类
- mysql范围条件_MySQL 索引及优化实战(一)
- java配置pom安装依赖包,Maven pom.xml 添加本地jar包依赖以及打包方法
- python标准库time_Python3标准库:time时钟时间
- 实现ISA Server 2006物理机到VMware ESX 4虚拟机的迁移
- 在龙芯上调试CoreCLR
- 玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点...
- TKDE2022 | 最新深度学习推荐系统综述:从协同过滤到信息增强的推荐系统
- gradle打包web jar_Gradle构建SpringBoot并打包可运行的jar配置
- 新疆有没有教电脑编程C语言,新疆学习电脑编程,新疆学电脑编程哪里好,新疆学电脑编程效果怎么样...
- Mac电脑问题:磁盘读写NTFS怎么不行?
- 数据分析师系列课程 统计学基础1
- Java的发展 Java在不同系统下的开发环境 Java语言特性 Java实现跨平台
- 斐讯k2虚拟服务器设置,斐讯K2调配设置
- JDBC 和数据库连接池
- 基于rhcs套件实现的高可用集群
- 计算机桌面下方标图,电脑下方怎么设置显示桌面图标
- linux基础:shell中的sh与bash区别与常用命令
- 电钻、电锤、电镐的区别
- java supper关键字
热门文章
- MpVue开发之swiper的使用
- 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
- golang常用手册:数组、变量作用域、函数
- Django Book 2.0 笔记——会话、用户和注册
- hdu 2441(ACM(Array Complicated Manipulation))
- 被程序员忽视的位运算
- How to become an expert in the IP industry? Here is where you should start
- JVM技术周报第2期
- 干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?
- linux常用命令 运算命令