BZOJ3231(矩阵连乘,稍有点复杂)
题意:
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- typedef long long LL;
- const int MAXN=25;
- struct Matrix
- {
- LL m[MAXN][MAXN];
- };
- LL b[MAXN],c[MAXN];
- LL K,M,N,P;
- Matrix a,per;
- void Init()
- {
- int i,j;
- for(i=0;i<=K;i++)
- for(j=0;j<=K;j++)
- per.m[i][j]=(i==j);
- }
- Matrix multi(Matrix a,Matrix b)
- {
- Matrix c;
- int i,j,k;
- for(i=0;i<=K;i++)
- {
- for(j=0;j<=K;j++)
- {
- c.m[i][j]=0;
- for(k=0;k<=K;k++)
- c.m[i][j]+=a.m[i][k]*b.m[k][j]%P;
- c.m[i][j]%=P;
- }
- }
- return c;
- }
- Matrix matrix_mod(LL n)
- {
- Matrix ans=per,p=a;
- while(n)
- {
- if(n&1)
- {
- ans=multi(ans,p);
- n--;
- }
- n>>=1;
- p=multi(p,p);
- }
- return ans;
- }
- int main()
- {
- int i,j;
- Init();
- LL ret1,ret2,S;
- Matrix ans;
- while(cin>>K)
- {
- ret1=ret2=0;
- for(i=0;i<K;i++)
- cin>>b[i];
- for(i=0;i<K;i++)
- cin>>c[i];
- cin>>M>>N>>P;
- for(i=0;i<K;i++)
- {
- b[i]%=P;
- c[i]%=P;
- }
- for(i=0;i<=K;i++)
- {
- for(j=0;j<=K;j++)
- {
- a.m[i][j]=0;
- if(i==0&&j==0) a.m[i][j]=1;
- if(i==0&&j>0) a.m[i][j]=c[j-1];
- if(i==1&&j>0) a.m[i][j]=c[j-1];
- if(i>1) a.m[i][j]=(i==(j+1));
- }
- }
- S=0;
- for(i=0;i<K;i++)
- {
- S+=b[i];
- S%=P;
- }
- if(N<=K)
- {
- for(i=0;i<=N-1;i++)
- {
- ret1+=b[i];
- ret1%=P;
- }
- }
- else
- {
- ans=matrix_mod(N-K);
- ret1=ans.m[0][0]*S%P;
- for(i=1;i<=K;i++)
- {
- ret1+=ans.m[0][i]*b[K-i]%P;
- ret1%=P;
- }
- }
- if(M-1<=K)
- {
- if(M>=2)
- for(i=0;i<=M-2;i++)
- {
- ret2+=b[i];
- ret2%=P;
- }
- if(M<2) ret2=0;
- }
- else
- {
- ans=matrix_mod(M-K-1);
- ret2=ans.m[0][0]*S%P;
- for(i=1;i<=K;i++)
- {
- ret2+=ans.m[0][i]*b[K-i]%P;
- ret2%=P;
- }
- }
- cout<<((ret1-ret2)%P+P)%P<<endl;
- }
- return 0;
- }
BZOJ3231(矩阵连乘,稍有点复杂)的更多相关文章
- 如果你喜欢python,那你迟早会喜欢上julia的!
你可曾想过有那么一门语言: 这门语言能够有C语言一样的速度,Ruby一样得活力(dynamism).像homoiconic一样的语言,它像Lisp一样有宏,但是也像Matlab一样有显而易见.熟悉的数 ...
- [2017BUAA软工助教]团队beta得分总表
一.累计得分 项目 α例会 α发布 α测试 α展示 α事后 合计 满分 50 10 10 150 10 230 hotcode5 50 10 9 150 9 228 弗朗明哥舞步 50 10 8 13 ...
- BZOJ-3231 递归数列 矩阵连乘+快速幂
题不是很难,但是啊,人很傻啊...机子也很鬼畜啊... 3231: [Sdoi2008]递归数列 Time Limit: 1 Sec Memory Limit: 256 MB Submit: 569 ...
- [bzoj3231][SDOI2008]递归数列——矩阵乘法
题目大意: 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k 其中bj和 cj ...
- 【bzoj3231】[Sdoi2008]递归数列 矩阵乘法+快速幂
题目描述 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k 其中bj和 cj ...
- 【BZOJ-3243】向量内积 随机化 + 矩阵
3243: [Noi2013]向量内积 Time Limit: 10 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 1249 Solved: ...
- (转)投影矩阵的推导(Deriving Projection Matrices)
转自:http://blog.csdn.net/gggg_ggg/article/details/45969499 本文乃<投影矩阵的推导>译文,原文地址为: http://www.cod ...
- 用状态矩阵解决有序操作的case爆炸问题(转载)
转自http://qa.baidu.com/blog/?p=167 作者:qabloger 一. 简介 我们在测试中可能都会面对case爆炸问题.有的case组合是无序的,我们可以通过pict[1]组 ...
- OpenCL 矩阵乘法
▶ 矩阵乘法,按照书里的内容进行了几方面的优化,包括局部内存,矢量数据类型,寄存器,流水线等. ● 最直接的乘法.调用时 main.c 中使用 size_t globalSize[] = { rowA ...
随机推荐
- Unity3D移植到自己的Android程序
用Unity3D开发需要把动画效果移植到现有的APP上面.Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发者,开发者可以在工程的基础上继续添 ...
- css3图片3D翻转效果
点击图片看翻转效果 html结构 <div class="flip"> <div class="front"> <img src= ...
- KNN算法[分类算法]
kNN(k-近邻)分类算法的实现 (1) 简介: (2)算法描述: (3) <?php /* *KNN K-近邻方法(分类算法的实现) */ /* *把.txt中的内容读到数组中保存,$file ...
- Docker和DevOps是找工作必备技能
根据最近的IT Jobs Watch数据,涉及Docker技术的的工作角色上升了317名次,排在500个最受追捧的IT技能第二位.无独有偶,从Rackspace最近的研究表明,Docker和DevOp ...
- java 键盘输入多种方法 .(转载)
一.java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner. 实例程序: 1.利用 Scanner 实现从键盘读入int ...
- liunx使用技巧
1.挂载与卸载U盘 新建一个目录:mkdir /mnt/usb; Fdisk –l |less 查看添加之后的设备名,设备文件系统格式 加载U盘设备: mount –t vfat /mnt/usb ...
- MySQL 关闭子表的外键约束检察
准备: 定义一个教师表.一个学生表:在学生表中引用教师表ID create table teachers(teacherID int not null auto_increment primary k ...
- Qt全屏显示窗口、子窗口的相关函数
Qt全屏显示函数 window.showFullScreen() Qt最大化显示函数 window.showMaximized() Qt最小化显示函数 ...
- C功底挑战Java菜鸟入门概念干货(一)
一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行. 2.Byte-codes 最大的好处是——可越平台运行,可让“一次编写,处处运行”成为可能. 3.使用 ...
- USACO chapter1
几天时间就把USACO chapter1重新做了一遍,发现了自己以前许多的不足.蒽,现在的程序明显比以前干净很多,而且效率也提高了许多.继续努力吧,好好的提高自己.这一章主要还是基本功的训练,没多少的 ...