hdu_5950_Recursive sequence(矩阵快速幂)
题目链接:hdu_5950_Recursive sequence
题意:递推求解:F(n) = 2*F(n-2) + F(n-1) + n4 和F(1) = a,F(2) = b;
题解:
一看数据范围,肯定矩阵加速递推,不过公式不是线性的,需要把公式转换为线性的公式

#include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll; const int mat_N=;
ll mo=; struct mat{
ll c[mat_N][mat_N];
void init(){memset(c,,sizeof(c));}
mat operator*(mat b){
mat M;int N=mat_N-;M.init();
F(i,,N)F(j,,N)F(k,,N)M.c[i][j]=(M.c[i][j]+c[i][k]*b.c[k][j])%mo;
return M;
}
mat operator^(ll k){
mat ans,M=(*this);int N=mat_N-;ans.init();
F(i,,N)ans.c[i][i]=;
while(k){if(k&)ans=ans*M;k>>=,M=M*M;}
return ans;
}
}A,B,C; int t,n,a,b; int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&a,&b);
A=(mat){,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,};
C=A^(n-);
ll ans=;
ans=(C.c[][]*a+C.c[][]*b+C.c[][]*+C.c[][]*+C.c[][]*+C.c[][]*+C.c[][])%mo;
printf("%lld\n",ans);
}
return ;
}
hdu_5950_Recursive sequence(矩阵快速幂)的更多相关文章
- HDU5950 Recursive sequence (矩阵快速幂加速递推) (2016ACM/ICPC亚洲赛区沈阳站 Problem C)
题目链接:传送门 题目: Recursive sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total ...
- HDU5950 Recursive sequence —— 矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-5950 Recursive sequence Time Limit: 2000/1000 MS (Java/Others) ...
- hdu-5667 Sequence(矩阵快速幂+费马小定理+快速幂)
题目链接: Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- UVA - 10689 Yet another Number Sequence 矩阵快速幂
Yet another Number Sequence Let’s define another number sequence, given by the foll ...
- Yet Another Number Sequence——[矩阵快速幂]
Description Everyone knows what the Fibonacci sequence is. This sequence can be defined by the recur ...
- HDU 1005 Number Sequence(矩阵快速幂,快速幂模板)
Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...
- HDU - 1005 Number Sequence 矩阵快速幂
HDU - 1005 Number Sequence Problem Description A number sequence is defined as follows:f(1) = 1, f(2 ...
- HDU - 1005 -Number Sequence(矩阵快速幂系数变式)
A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) m ...
- HDU 5950 - Recursive sequence - [矩阵快速幂加速递推][2016ACM/ICPC亚洲区沈阳站 Problem C]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with ...
随机推荐
- JS-兼容
[个人汇总] 1.JS判断是否点击回车键/enter键 $(document).keypress(function(event){ var keycode = (event.keyCode ? eve ...
- 常用的HTTP方法
方法 描述 是否包含主体 GET 从服务器获得一份文档 否 HEAD 只从服务器获得响应报文的首部 否 POST 向服务器发送需要处理的数据 是 PUT 将请求 ...
- 关于Python的文件IO
使用Open函数, 第一个参数为文件名, 例如"C:\abc.txt",这里要注意的是r"C:\abc.txt". 第二个参数为文件的操作方式, 这里着重探讨写 ...
- Egret 显示容器
1,显示容器:所有的容器都继承自DisplayObjectContainer , DisplayObjectContainer 又继承自DisplayObject: 2,想定义一个容器只要创建一个类, ...
- class.forname()方法的学习(转)
Class.forName(xxx.xx.xx) 返回的是一个类 首先你要明白在java里面任何class都要装载在虚拟机上才能运行.这句话就是装载类用的(和new 不一样,要分清楚). 至于什么时候 ...
- GridControl/GridView的分组操作
今天在模块编写中碰到了对表格的分组,特意在这里把它记录下来. 一.背景:Dev14.1.3,GridControl,.NET4.0+C# 二.过程 1.GridControl设计 一共添加4列:在下面 ...
- web字体图标的使用
今天给大家介绍一些web字体图标的下载和使用 一.WEB字体 1. 下载外部的字体图标的网站 font-awesome.com 2.CSS文件和font文件 3.html文档中使用外部字体 4.下载字 ...
- OSI七层模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...
- Java的URL来下载网页源码
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; impor ...
- git 基本的操作
查看分支:git branch 查看所有分支:git branch -a 删除分支:git branch -d <name> 创建分支:git branch <nam ...