A Simple Math Problem (矩阵快速幂)
Lele now is thinking about a simple function f(x). 
If x < 10 f(x) = x. 
If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10); 
And ai(0<=i<=9) can only be 0 or 1 . 
Now, I will give a0 ~ a9 and two positive integers k and m ,and could you help Lele to caculate f(k)%m.
Input
The problem contains mutiple test cases.Please process to the end of file. 
In each case, there will be two lines. 
In the first line , there are two positive integers k and m. ( k<2*10^9 , m < 10^5 )
In the second line , there are ten integers represent a0 ~ a9.
Output
For each case, output f(k) % m in one line.
Sample Input
10 9999
1 1 1 1 1 1 1 1 1 1
20 500
1 0 1 0 1 0 1 0 1 0
Sample Output
45
104
代码:递推式套矩阵快速幂即可,注意多组输入
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=10;
int n,mod;
int temp[N][N];
int res[N][N],a[N][N];
void mul(int a[][N],int b[][N]) {
	memset(temp,0,sizeof(temp));
	for(int i=0; i<N; i++)
		for(int j=0; j<N; j++)
			for(int k=0; k<N; k++)
				temp[i][j]=(temp[i][j]+a[i][k]*b[k][j]%mod)%mod;
	for(int i=0; i<N; i++)
		for(int j=0; j<N; j++)
			a[i][j]=temp[i][j];
	return ;
}
void QuickPow(int nn) {
	memset(res,0,sizeof(res));
	for(int i=0; i<N; i++)
		res[i][i]=1;
	while(nn) {
		if(nn&1)
			mul(res,a);
		mul(a,a);
		nn>>=1;
	}
	return ;
}
int main() {
	while(~scanf("%d %d",&n,&mod)) {
		memset(a,0,sizeof(a));
		for(int i=0; i<N; i++)
			scanf("%d",&a[0][i]);
		for(int i=1; i<N; i++)
			a[i][i-1]=1;
		if(n<10) printf("%d\n",n%mod);
		else {
			QuickPow(n-9);
			int ans=0;
			for(int i=0; i<N; i++)
				ans+=res[0][i]*(9-i)%mod;
			printf("%d\n",ans%mod);
		}
	}
	return 0;
}
A Simple Math Problem (矩阵快速幂)的更多相关文章
- HDU1757 A Simple Math Problem 矩阵快速幂
		A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ... 
- HDU 1757 A Simple Math Problem (矩阵快速幂)
		题目 A Simple Math Problem 解析 矩阵快速幂模板题 构造矩阵 \[\begin{bmatrix}a_0&a_1&a_2&a_3&a_4&a ... 
- A Simple Math Problem(矩阵快速幂)----------------------蓝桥备战系列
		Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 f(x) = a0 ... 
- hdu 1757 A Simple Math Problem_矩阵快速幂
		题意:略 简单的矩阵快速幂就行了 #include <iostream> #include <cstdio> #include <cstring> using na ... 
- BestCoder Round #29——A--GTY's math problem(快速幂(对数法))、B--GTY's birthday gift(矩阵快速幂)
		GTY's math problem Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ... 
- HDU 1757 A Simple Math Problem(矩阵)
		A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ... 
- hdu-1757 A Simple Math Problem---矩阵快速幂模板题
		题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1757 题目大意: 求递推式第k项模m If x < 10 f(x) = x.If x > ... 
- A Simple Math Problem  矩阵打水题
		A Simple Math Problem Lele now is thinking about a simple function f(x).If x < 10 f(x) = x.If x & ... 
- HDU - 3521 An easy Problem(矩阵快速幂)
		http://acm.hdu.edu.cn/showproblem.php?pid=3521 题意 对于矩阵A,求e^A的值. 分析 这个定眼一看好像很熟悉,就是泰勒展开,可惜自己的高数已经还给老师了 ... 
- hdu 6182A Math Problem(快速幂)
		You are given a positive integer n, please count how many positive integers k satisfy kk≤nkk≤n. Inp ... 
随机推荐
- 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测
			思科DNA竞品比较工具 您的网络能够驱动数字化转型吗? 根据IDC调查,45%的受调研公司计划在未来两年内做好网络数字化的准备.查看数字化网络带来的结果和商业价值. 下载报告 思科 HPE 华为 Ar ... 
- listen 55
			There are also green card qualifiers for some non-citizens who invest in America, and for refugees.难 ... 
- codeforces 705B B. Spider Man(组合游戏)
			题目链接: B. Spider Man time limit per test 2 seconds memory limit per test 256 megabytes input standard ... 
- hdu-5805 NanoApe Loves Sequence(线段树+概率期望)
			题目链接: NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 ... 
- linux命令学习笔记(54):ping命令
			Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器, 看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试” ... 
- BZOJ4307: Maishroom & Class
			感觉有一点题面没有说得特别明确,就是一个人代替了其他人之后,另一个可以被他代替的人就不能让他来代替自己了. 每个人向自己可以代替的人连边,额外增加一个源点$r$向所有助教连边.第一问答案是$r$不能到 ... 
- ACM学习历程——UVA540 Team Queue(队列,map:Hash)
			Description Team Queue Team Queue Queues and Priority Queues are data structures which are know ... 
- AtCoder Grand Contest 009 D:Uninity
			题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_d 题目翻译 定义只有一个点的树权值为\(0\),若干棵(可以是\(0\)棵)权值为\(k\) ... 
- bzoj4176
			莫比乌斯反演 根据约数和个数公式 $ans = \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{x|i}\sum_{y|j}{[gcd(i, j)==1]}$ 交换枚举顺序 $an ... 
- sublime取消自动升级提示
			1.进入Preferences -> Settings-User ,添加 "update_check": false, 2.重启Sublime. 
