题意:

       an=Σ1<=i<=kan-ibi mod 10 000 for n >= k,题意看了好久才懂,有点蛋疼啊,

这个题目要是能看懂题意就简单了,先给你k,然后给你a0 a1 a2 a3 ..ak-1.

然后给你b1 b2 b3 b4 ..bk,然后给你一个i,让你输出ai的值,如果i < k直接输出输入时的ai就行,否则就按照他给的那个公式

an=Σ1<=i<=kan-ibi mod 10 000 for n >= k

比如k=3

那么 a3 = a2*b1 + a1*b2 + a0*b3

     a4 = a3*b1 + a2*b2 + a1*b3

     a5 = a4*b1 + a3*b2 + a2*b3

     a6 = a5*b1 + a4*b2 + a3*b3

......

下面构造矩阵 ,这个矩阵是k*k的,也就是每次都是变的,但是有规律,最大是100*100

,拿k=3举例子

a3 a2 a1  0 0 b1  a2 a3 a4

          1 0 b2

          0 1 b3

这样就轻松构造这个矩阵了吧,要是k=4也一样

0 0 0 b1

1 0 0 b2

0 1 0 b3

0 0 1 b4

....

好啦就说这么多,最近在忙活写服务器玩,去写自己的服务器喽......


#include<stdio.h>
#include<string.h> #define MOD 10000 typedef struct
{
int mat[110][110];
}M; M matM(M a ,M b ,int n)
{
M c;
memset(c.mat ,0 ,sizeof(c.mat));
for(int k = 1 ;k <= n ;k ++)
for(int i = 1 ;i <= n ;i ++)
if(a.mat[i][k])
for(int j = 1 ;j <= n ;j ++)
c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % MOD;
return c;
} M qPowMat(M a ,int b ,int n)
{
M c;
memset(c.mat ,0 ,sizeof(c.mat)); for(int i = 1 ;i <= n ;i ++)
c.mat[i][i] = 1; while(b)
{
if(b & 1) c = matM(c ,a ,n);
a = matM(a ,a ,n);
b >>= 1;
}
return c;
} int main ()
{
int k ,n ,i ,j;
int A[105] ,B[105];
M star ,ans;
while(~scanf("%d" ,&k) && k)
{
for(i = 0 ;i < k ;i ++)
scanf("%d" ,&A[i]);
for(i = k ;i >= 1 ;i --)
scanf("%d" ,&B[i]);
scanf("%d" ,&n);
if(n < k)
{
printf("%d\n" ,A[n]);
continue;
}
memset(star.mat ,0 ,sizeof(star.mat));
for(i = 1 ;i < k ;i ++)
star.mat[i+1][i] = 1;
for(i = 1 ;i <= k ;i ++)
star.mat[i][k] = B[i];
ans = qPowMat(star ,n - k + 1 ,k); int sum = 0;
for(i = 1 ;i <= k ;i ++)
sum = (sum + A[i-1] * ans.mat[i][k]) % MOD;
printf("%d\n" ,sum);
}
return 0;
}

POJ2118基础矩阵快速幂的更多相关文章

  1. lightoj 1096【矩阵快速幂(作为以后的模板)】

    基础矩阵快速幂何必看题解 #include <bits/stdc++.h> using namespace std; /* 0 1 2 3 4 5 6 7 0 0 0 */ const i ...

  2. 2020牛客寒假算法基础集训营1 J. 缪斯的影响力 (矩阵快速幂/费马小定理降幂)

    https://ac.nowcoder.com/acm/problem/200658 f(n) = f(n-1) * f(n-2) * ab ,f的第一项是x,第二项是y. 试着推出第三项是x·y·a ...

  3. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

  4. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  5. HDU4887_Endless Punishment_BSGS+矩阵快速幂+哈希表

    2014多校第一题,当时几百个人交没人过,我也暴力交了几发,果然不行. 比完了去学习了BSGS才懂! 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4887 ...

  6. poj 3070 Fibonacci(矩阵快速幂,简单)

    题目 还是一道基础的矩阵快速幂. 具体的居者的幂公式我就不明示了. #include<stdio.h> #include<string.h> #include<algor ...

  7. hdu 2243 考研路茫茫——单词情结 ac自动机+矩阵快速幂

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2243 题意:给定N(1<= N < 6)个长度不超过5的词根,问长度不超过L(L <23 ...

  8. 矩阵快速幂(入门) 学习笔记hdu1005, hdu1575, hdu1757

    矩阵快速幂是基于普通的快速幂的一种扩展,如果不知道的快速幂的请参见http://www.cnblogs.com/Howe-Young/p/4097277.html.二进制这个东西太神奇了,好多优秀的算 ...

  9. hdu3306 Another kind of Fibonacci【矩阵快速幂】

    转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://acm.hdu.edu.cn/showproblem. ...

随机推荐

  1. JS时间格式转成字符串

    formatNumber = n => { n = n.toString(); return n[1] ? n : '0' + n }; // 时间格式化 formatTime = date = ...

  2. 每日一题20201112(922. 按奇偶排序数组 II)

    题目链接: 922. 按奇偶排序数组 II 思路 很简单,搞懂问题的核心就行,假设现在有奇数在偶数位上,偶数在奇数位上. 那么我们要做的就是,找到分别在对方位置上的数字,然后交换他们就行. class ...

  3. 掌握HTTP原理

    URI和URL URI的全程为Uniform Resource identifier,即统一资源标志符,URL的全称 Universal Resource Locator 即统一资源定位符 在目前的互 ...

  4. Cup HDU - 2289

    题目传送门:https://vjudge.net/problem/HDU-2289 题意:有一个上口小于底部的圆台形水杯,告诉我们水的体积求水高度. 思路:利用高中数学知识求rr然后二分求h,具体化简 ...

  5. 2018ICPC南京I. Magic Potion

    题目: 题意:n个士兵打m个怪兽,每个士兵只能打一个,但是如果有魔法药水就可多打一个问最多能打几个. 题解:如果没有魔法药就是一道裸二分图,因为现在有魔法要我们可以这样建图: 多建一个i+n的节点存放 ...

  6. js_笔记_8月7日记录_活动对象_作用域链_按值传递

    活动对象:简单说就是这个函数的参数和显示声明的变量或函数. 函数内接受的参数实际是创建了一个局部变量:[形参名] = [传进来的值],js的函数传参只传值. 作用域链:执行流进入一个函数,会先创建出作 ...

  7. 走进docker-聊聊docker网络

    容器网络概念 首先了解下linux的网络构成概念 命名空间: Linux在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信:Docker利用这一特性,实现不容器间的网 ...

  8. 从wav到Ogg Opus 以及使用java解码OPUS

    PCM 自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码.PCM通过抽样.量化.编码三个步骤将连续变化的模拟信号转换为数字编码. 采样率 采样频率,也称为采样速度或 ...

  9. Java网络编程快速上手(SE基础)

    参考资料:百度百科TCP协议 本文涉及Java IO流.异常的知识,可参考我的另外的博客 一文简述Java IO 一文简述JAVA内部类和异常 1.概述 计算机网络相关知识: OSI七层模型 一个报文 ...

  10. 报错:Method definition shorthands are not supported by current JavaScript version

    当你在html中使用调用js中的方法时,会出现这行报错: method definition shorthands are not supported by current JavaScript ve ...