codevs 1574 广义斐波那契数列

 时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 钻石 Diamond
 
题目描述 Description

广义的斐波那契数列是指形如an=p*an-1+q*an-2的数列。今给定数列的两系数p和q,以及数列的最前两项a1和a2,另给出两个整数n和m,试求数列的第n项an除以m的余数。

输入描述 Input Description

输入包含一行6个整数。依次是p,q,a1,a2,n,m,其中在p,q,a1,a2整数范围内,n和m在长整数范围内。

输出描述 Output Description

输出包含一行一个整数,即an除以m的余数。

样例输入 Sample Input

1 1 1 1 10 7

样例输出 Sample Output

6

数据范围及提示 Data Size & Hint

数列第10项是55,除以7的余数为6。

 /*
注意:矩阵快速幂是把构造的矩阵乘^n次(根据同余原理,计算中是可以%的)后,再与原矩阵想乘,把原矩阵做n次快速幂是错误的*/
/*
联系一下int的快速幂:
ans=1;
while(n)//求b^n
{
if(n&1)
ans=ans*b;-------1
n>>=1;
b=b*b;---------2
}
就是把1,2两句中的相乘都用“三变量法”来做(矩阵的特殊性,不能把结果直接存进原矩阵中)。
*/
 #include<iostream>
using namespace std;
#include<cstdio>
typedef long long ll;
ll n,m;
ll p,q,a1,a2;
ll jz[][],b[][],c[][];/*注意以后遇到ll与int相乘的题目,把int的变量直接设为ll*/
int main()
{
cin>>p>>q>>a1>>a2;
cin>>n>>m;n-=;
b[][]=jz[][]=;b[][]=jz[][]=q;
b[][]=jz[][]=;b[][]=jz[][]=p; while(n)
{
if(n&)
{
for(int i=;i<=;++i)
for(int j=;j<=;++j)
for(int k=;k<=;++k)
c[i][j]=(c[i][j]+jz[i][k]*b[k][j]%m)%m;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
jz[i][j]=c[i][j],c[i][j]=;
}
n>>=;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
for(int k=;k<=;++k)
c[i][j]=(c[i][j]+b[i][k]*b[k][j]%m)%m;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
b[i][j]=c[i][j],c[i][j]=;
} cout<<(a2*jz[][]%m+a1*jz[][]%m)%m;/*注意这里要把a1,a2乘以原来的那个01向量,而不是pq向量,因为矩阵计算了n-2次,如果乘以pq向量的话,计算出的是an+1*/
return ;
}

最新文章

  1. Docker - 入门
  2. RAID技术介绍
  3. ASP.Net一键自动化更新代码、编译、合并dll、压缩js、css、混淆dll、zip打包、发布到测试环境的bat批处理
  4. hive修改 表/分区语句
  5. robotframework接口测试初探3
  6. WinForm应用只运行一次
  7. spoj705 后缀数组求不同子串的个数
  8. C语言宏定义时#(井号)和##(双井号)的用法
  9. 真正的让iframe自适应高度 兼容多种浏览器随着窗口大小改变
  10. 获取UIColor中的RGB值(本人亲测多个获取RGB值的方法,这个最有效)
  11. mybatis-java代码调用部分
  12. 2017 多校训练 1006 Function
  13. class-提升方法Boosting
  14. Mysql中联合索引的最左匹配原则
  15. python 使用selenium模块实现自动搜索百度百科词条(模拟人工搜索)
  16. 选择排序&lt;C#&gt;
  17. 关于GridControl--gridview的下拉框列(下拉列表列)
  18. bug ,improvements, features jira等信息
  19. WPF INotifyPropertyChanged 通过特性减少代码量
  20. 关于webWorker的理解和简单例子

热门文章

  1. ahjesus让nodejs支持dotjs模板
  2. eclipse优化与标准化记录
  3. [转载]拜占庭问题深入讨论 from http://bitkan.com/news/topic/14011
  4. js一些小题(二)
  5. MSCRM 修改 默认组织
  6. Enforcing the correct protocol for partially SSL secured SharePoint sites
  7. Android项目实战(五):TextView自适应大小
  8. Struts2(十三)国际化-internationalization
  9. IOS 网络浅析 (二 网络异步请求)
  10. unity下载文件三(http异步下载)