HDU 2855 (矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855
题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$
解题思路:
题目挺吓人的。先把完整组合数+Fibonacci展开来。
利用Fibonacci的特性,从第一项开始消啊消,消到只有一个数:
$S(0)=f(0)$
$S(1)=f(2)$
$S(2)=f(4)$
$S(n)=f(2*n)$
这样矩阵快速幂就可以了,特判$n=0$时的情况。
快速幂矩阵
$\begin{bmatrix}f1 & f0 \\ 0 & 0\end{bmatrix}\begin{bmatrix}1 & 1 \\1 & 0 \end{bmatrix}=\begin{bmatrix}f2 & f1 \\
0 & 0\end{bmatrix}$
代码
#include "cstdio"
#include "cstring"
#define LL long long
#define mod m
#define K 2
LL n,m;
struct Matrix
{
LL mat[K][K];
Matrix() {memset(mat,,sizeof(mat));}
Matrix(LL *val)
{
int idx=;
for(int i=;i<K;i++)
for(int j=;j<K;j++)
mat[i][j]=val[idx++];
}
};
Matrix operator * (Matrix a,Matrix b)
{
Matrix ret;
for(int i=;i<K;i++)
for(int j=;j<K;j++)
{
ret.mat[i][j]=;
for(int k=;k<K;k++)
ret.mat[i][j]+=((a.mat[i][k]*b.mat[k][j])%mod);
}
return ret;
}
Matrix operator ^ (Matrix a,LL n)
{
Matrix ret,base=a;
for(int i=;i<K;i++) ret.mat[i][i]=;
while(n)
{
if(n&) ret=ret*base;
base=base*base;
n>>=;
}
return ret;
}
int main()
{
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d",&n,&m);
if(n==) printf("0\n");
else
{
LL obj=n*;
LL bval[]={,,,};
LL pval[]={,,,};
Matrix Base(bval),Pow(pval),ans=Pow^(obj-);
ans=Base*ans;
printf("%I64d\n",ans.mat[][]%mod);
}
}
}
HDU 2855 (矩阵快速幂)的更多相关文章
- HDU 4471 矩阵快速幂 Homework
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4471 解题思路,矩阵快速幂····特殊点特殊处理····· 令h为计算某个数最多须知前h个数,于是写 ...
- HDU - 1575——矩阵快速幂问题
HDU - 1575 题目: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n( ...
- hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...
- 随手练——HDU 5015 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5015 看到这个限时,我就知道这题不简单~~矩阵快速幂,找递推关系 我们假设第一列为: 23 a1 a2 ...
- HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识
求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...
- How many ways?? HDU - 2157 矩阵快速幂
题目描述 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的 ...
- HDU 5950 矩阵快速幂
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 1757 矩阵快速幂 **
一看正确率这么高,以为是水题可以爽一发,结果是没怎么用过的矩阵快速幂,233 题解链接:点我 #include<iostream> #include<cstring> ; us ...
- HDU 4686 矩阵快速幂 Arc of Dream
由式子的性质发现都是线性的,考虑构造矩阵,先有式子,a[i] = ax * a[i-1] + ay; b[i] = bx*b[i-1] +by; a[i]*b[i] = ax*bx*a[i-1]*b[ ...
随机推荐
- postgresql集群方案参考答案
PostgreSQL配置Streaming Replication集群 http://www.cnblogs.com/marsprj/archive/2013/03/04/2943373.html p ...
- Spring.Net的IOC入门
1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...
- Server.MapPath查询路径那几件事
主要总结Server.MapPath 这个方法的使用以及使用的场景,不是什么时候都适合使用: 1.实现功能: Server.MapPath能够获取指定URL相对服务器的物理路径,在IIS服务端,能够根 ...
- Windows 8使用这半年(企业版)
2014-06-23 硬件:thinkpad e430c core i5-3210m 4g/500g 1.Windows 8出现开机引导问题 主要开机的时候提示缺少引导文件,按ctrl+alt+del ...
- How many Fibs?【sudt 2321】【大数的加法及其比较】
How many Fibs? Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Recall the definition of t ...
- Sexagenary Cycle(天干地支法表示农历年份)
Sexagenary Cycle Time Limit: 2 Seconds Memory Limit: 65536 KB 题目链接:zoj 4669 The Chinese sexagen ...
- OCJP(1Z0-851) 模拟题分析(六)over
Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...
- hdu 1075:What Are You Talking About(字典树,经典题,字典翻译)
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K ...
- QQ的账号登录及api操作
.qq.php <?php /** * PHP Library for qq.com * * @author */ class qqPHP { function __construct($app ...
- ASP.NET 5探险(8):利用中间件、TagHelper来在MVC 6中实现Captcha
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于ASP.NET 5及MVC 6是一个微软全新重新的Web开发平台,之前一些现有的验 ...