Codevs No.1281 Xn数列
2016-06-01 16:28:25
题目链接: Xn数列 (Codevs No.1281)
题目大意:
给定一种递推式为 Xn=(A*Xn-1+C)%M 的数列,求特定的某一项%G
解法:
矩阵乘法
不会的去看看高中矩阵的那本选修,起码知道都是啥意思,好理解得多
矩阵构造: 向量构造:
A C X0
0 1 1
需要注意的地方:
1.超大整数乘法,写个快速乘,防止爆longlong
2.函数的代值类型千万别错了啊,一个longlong打成int爆了一个多小时
//Xn数列 (Codevs No.1281)
//矩阵乘法
#include<stdio.h>
#include<algorithm>
using namespace std;
long long a[][];
long long b[][];
long long c[][];
long long M,A,C,X,N,G;
long long ans;
long long mX(long long x, long long y)
{
long long s=,k=;
while(y>)
{
if(y&)s=(s+x)%M;
x=(x<<)%M;
y=y>>;
}
return s;
}
void Multi1()
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
c[i][j]=;
for(int k=;k<=;k++)
{
c[i][j]=(c[i][j]%M+mX(a[i][k],b[k][j])%M)%M;
}
}
}
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
a[i][j]=c[i][j];
}
}
return ;
}
void Multi2()
{
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
c[i][j]=;
for(int k=;k<=;k++)
{
c[i][j]=(c[i][j]%M+mX(b[i][k],b[k][j])%M)%M;
}
}
}
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
b[i][j]=c[i][j];
}
}
return ;
}
void Bpow(long long x)
{
while(x)
{
if(x&)Multi1();
Multi2();
x>>=;
}
return ;
}
int main()
{
scanf("%lld %lld %lld %lld %lld %lld",&M,&A,&C,&X,&N,&G);
a[][]=b[][]=;
a[][]=b[][]=A%M;
a[][]=b[][]=C%M;
Bpow(N-);
ans=(mX(a[][],X)+a[][])%M;
printf("%lld",ans%G);
}
Codevs No.1281 Xn数列的更多相关文章
- 【CODEVS】1281 Xn数列
[算法]矩阵快速幂 [题解]T*A(n-1)=A(n)矩阵如下: a 1 * x(n-1) 0 = xn 0 0 1 c 0 c 0 防止溢出可以用类似快速幂的快速乘. ...
- [WikiOI "天梯"1281] Xn数列
题目描述Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入描 ...
- codevs 1281 Xn数列
题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入 ...
- codevs 1281 Xn数列 (矩阵乘法)
/* 再来个题练练手 scanf longlong 有bug....... */ #include<cstdio> #include<iostream> #include< ...
- 【wikioi】1281 Xn数列(矩阵乘法)
http://wikioi.com/problem/1281/ 矩阵真是个神奇的东西.. 只要搞出一个矩阵乘法,那么递推式可以完美的用上快速幂,然后使复杂度降到log 真是神奇. 在本题中,应该很快能 ...
- C++之路进阶——codevs1281(Xn数列)
1281 Xn数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你6个数,m, a, c, x0, n, ...
- Xn数列(codevs 1281)
题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入 ...
- codevs1281 Xn数列
题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入 ...
- Xn数列
题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输 ...
随机推荐
- win7进入不了系统故障修复
问题: 由于电脑关机比较慢,等得不耐烦了,就强制关机了,以前都没事,直到昨晚打开电脑,提示windows错误恢复,试了好久,提示windows无法修复此计算机,看来是没办法了.后来进入系统还原后,总算 ...
- Tomcat原理 分类: 原理 2015-06-28 19:26 5人阅读 评论(0) 收藏
Tomcat的模块结构设计的相当好,而且其Web 容器的性能相当出色.JBoss直接就使用了Tomcat的web容器,WebLogic的早期版本也是使用了Tomcat的代码. Web容器的工作过程在下 ...
- NFC(1)NFC简介,3种模式
简介 NFC(Near Field Communication,近场通信),是一种数据传输技术.但与Wi-Fi.蓝牙.红外线等数据传输技术的一个主要差异就 是有效距离一般不能超过4厘米. NFC支持如 ...
- Android Material Design-TabLayout的使用
TabLayout 位于 android.support.design.widget.TabLayout. 一般与 ViewPager 结合在一起使用.以前有开源库 viewpagerindicato ...
- Android加速度传感器实现“摇一摇”,带手机振动
由于代码有点多,所以就分开写了,注释还算详细,方便学习 Activity package com.lmw.android.test; import android.app.Activity; im ...
- UVa 1638 (递推) Pole Arrangement
很遗憾,这么好的一道题,自己没想出来,也许太心急了吧. 题意: 有长度为1.2.3...n的n个杆子排成一行.问从左到右看能看到l个杆子,从右往左看能看到r个杆子,有多少种排列方法. 分析: 设状态d ...
- python模拟http请求
下文主要讲述如何利用python自带的库模拟http请求,为以后利用python做API测试做准备. 只讲述模拟http的过程,具体到自己用的时候,要以自己的应用为准做出适当的调整. #!coding ...
- Java [Leetcode 112]Path Sum
题目描述: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding ...
- 庖丁解牛-----Live555源码彻底解密(RTP解包)
Live555 客户端解包 以testRTSPClient.cpp为例讲解: Medium<-MediaSource<-FramedSource<-RTPSource<-Mul ...
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...