HDU5950【矩阵快速幂】
主要还是i^4化成一个(i+1)^4没遇到过,还是很基础的一题矩阵快速幂;
#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const LL mod=2147493647; const int N=1e5+10; struct asd{
LL num[8][8];
}; asd mul(asd a,asd b)
{
asd ans;
memset(ans.num,0,sizeof(ans.num));
for(int i=0;i<7;i++)
for(int j=0;j<7;j++)
for(int k=0;k<7;k++)
ans.num[i][j]=(ans.num[i][j]+a.num[i][k]*b.num[k][j]%mod)%mod;
return ans;
} asd quickmul(LL g,asd x)
{
asd ans;
for(int i=0;i<7;i++)
for(int j=0;j<7;j++)
{
if(i==j)
ans.num[i][j]=1;
else
ans.num[i][j]=0;
}
while(g)
{
if(g%2)
ans=mul(ans,x);
x=mul(x,x);
g>>=1;
}
return ans;
} int main()
{
int T;
LL n,A,B;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld",&n,&A,&B);
if(n==1)
{
printf("%lld\n",A%mod);
}
else if(n==2)
printf("%lld\n",B%mod);
else
{
asd tmp;
tmp.num[0][0]=1;tmp.num[0][1]=2;tmp.num[0][2]=1;tmp.num[0][3]=4;tmp.num[0][4]=6;tmp.num[0][5]=4;tmp.num[0][6]=1;
tmp.num[1][0]=1;tmp.num[1][1]=0;tmp.num[1][2]=0;tmp.num[1][3]=0;tmp.num[1][4]=0;tmp.num[1][5]=0;tmp.num[1][6]=0;
tmp.num[2][0]=0;tmp.num[2][1]=0;tmp.num[2][2]=1;tmp.num[2][3]=4;tmp.num[2][4]=6;tmp.num[2][5]=4;tmp.num[2][6]=1;
tmp.num[3][0]=0;tmp.num[3][1]=0;tmp.num[3][2]=0;tmp.num[3][3]=1;tmp.num[3][4]=3;tmp.num[3][5]=3;tmp.num[3][6]=1;
tmp.num[4][0]=0;tmp.num[4][1]=0;tmp.num[4][2]=0;tmp.num[4][3]=0;tmp.num[4][4]=1;tmp.num[4][5]=2;tmp.num[4][6]=1;
tmp.num[5][0]=0;tmp.num[5][1]=0;tmp.num[5][2]=0;tmp.num[5][3]=0;tmp.num[5][4]=0;tmp.num[5][5]=1;tmp.num[5][6]=1;
tmp.num[6][0]=0;tmp.num[6][1]=0;tmp.num[6][2]=0;tmp.num[6][3]=0;tmp.num[6][4]=0;tmp.num[6][5]=0;tmp.num[6][6]=1;
asd ans;
ans=quickmul(n-2,tmp);
LL res;
// printf("%lld %lld %lld \n",ans.num[0][0],ans.num[0][1],ans.num[0][2]);
res=((ans.num[0][0]*B%mod+ans.num[0][1]*A%mod)%mod+ans.num[0][2]*16%mod+ans.num[0][3]*8%mod+ans.num[0][4]*4%mod+ans.num[0][5]*2%mod+ans.num[0][6])%mod;
printf("%lld\n",res);
}
}
return 0;
}
HDU5950【矩阵快速幂】的更多相关文章
- HDU5950 矩阵快速幂(巧妙的递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f[n] = 2*f[n-2] + f[n-1] + n^4 思路:对于递推题而言,如果递 ...
- HDU5950 Recursive sequence —— 矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-5950 Recursive sequence Time Limit: 2000/1000 MS (Java/Others) ...
- HDU5950(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...
- 【HDU5950】Recursive sequence(矩阵快速幂)
BUPT2017 wintertraining(15) #6F 题意 \(f(1)=a,f(2)=b,f(i)=2*(f(i-2)+f(i-1)+i^4)\) 给定n,a,b ,\(N,a,b < ...
- HDU5950 Recursive sequence (矩阵快速幂加速递推) (2016ACM/ICPC亚洲赛区沈阳站 Problem C)
题目链接:传送门 题目: Recursive sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total ...
- HDU5950 Recursive sequence 非线性递推式 矩阵快速幂
题目传送门 题目描述:给出一个数列的第一项和第二项,计算第n项. 递推式是 f(n)=f(n-1)+2*f(n-2)+n^4. 由于n很大,所以肯定是矩阵快速幂的题目,但是矩阵快速幂只能解决线性的问题 ...
- RecursiveSequence(HDU-5950)【矩阵快速幂】
题目链接: 题意:Si=S(i-1)+2*S(i-2)+i^4,求Sn. 思路:想到了矩阵快速幂,实在没想出来怎么构造矩阵.... 首先构造一个向量vec={a,b,16,8,4,2,1}. 在构造求 ...
- 一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483
思想启发来自, 罗博士的根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解.主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F ...
- hdu3483 A Very Simple Problem 非线性递推方程2 矩阵快速幂
题目传送门 题目描述:给出n,x,mod.求s[n]. s[n]=s[n-1]+(x^n)*(n^x)%mod; 思路:这道题是hdu5950的进阶版.大家可以看这篇博客hdu5950题解. 由于n很 ...
随机推荐
- 用live555做流媒体转发服务器?
当我们看到这里,说明大家都有这样的一个想法:那就是如何用live555实现一个直播代理转发的流媒体服务器? 我们先不着急去讨论用live555实现流媒体转发的技术方法123,先从live555的整个架 ...
- yum 工作原理
MySQL :: A Quick Guide to Using the MySQL Yum Repository https://dev.mysql.com/doc/mysql-yum-repo-qu ...
- Linux就该这么学--命令集合5(用户与组管理命令)
1.useradd命令用于创建新用户:(useradd [选项] 用户名) 附录: -d 指定用户的家目录 -D 展示默认值 -e 账号有效截止日期,格式:YYY-MM-DD -g 指定一个初始用户组 ...
- svn提交异常file is scheduled for addition, but is missing
svn提交错误file is scheduled for addition, but is missing svn ci -m "" svn: E155010: Commit fa ...
- java replaceAll Replace
java ReplaceAll 的两个参数都必须是正则表达式. 在正则表达式中 \ (一个斜线)是用 \\ 来表示(即:用两个斜线表示一个斜线) 而在Java语言中 \ (一个斜线)是用 \\ 来表示 ...
- 使用c函数库的两个函数strtok, strncpy遇到的问题记录
1. strtok 问题背景: 解析形如 “1,2,3,4,5”字符串到整数数组 (1)计算个数 char* delim = ","; int count = 0; int *nu ...
- Appnium安装-Mac平台
Appium的安装-MAC平台 其实Appium的安装方式主要有两种: 1)自己安装配置nodejs的环境,然后通过npm进行appium的安装 2)直接下载官网提供的dmg进行安装,dmg里面已 ...
- vue程序中组件间的传值方式
vue程序在组件中进行传值有多种方式,这里记录我在项目中使用到的三种: 1. 父组件向子组件传值 2. 子组件向父组件传值 3. 通过路由传参 父组件通过props向子组件传值 在子组件script中 ...
- codeforces 570D.Tree Requests
[题目大意]: 给定一棵树,树的每个节点对应一个小写字母字符,有m个询问,每次询问以vi为根节点的子树中,深度为hi的所有节点对应的字符能否组成一个回文串: [题目分析]: 先画个图,可看出每次询问的 ...
- HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性
一.HDFS的高可用性 1.概述 本指南提供了一个HDFS的高可用性(HA)功能的概述,以及如何配置和管理HDFS高可用性(HA)集群.本文档假定读者具有对HDFS集群的组件和节点类型具有一定理解.有 ...