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数列的更多相关文章

  1. 【CODEVS】1281 Xn数列

    [算法]矩阵快速幂 [题解]T*A(n-1)=A(n)矩阵如下: a 1 * x(n-1) 0 = xn 0 0 1    c        0    c   0 防止溢出可以用类似快速幂的快速乘. ...

  2. [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 输入描 ...

  3. 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 输入 ...

  4. codevs 1281 Xn数列 (矩阵乘法)

    /* 再来个题练练手 scanf longlong 有bug....... */ #include<cstdio> #include<iostream> #include< ...

  5. 【wikioi】1281 Xn数列(矩阵乘法)

    http://wikioi.com/problem/1281/ 矩阵真是个神奇的东西.. 只要搞出一个矩阵乘法,那么递推式可以完美的用上快速幂,然后使复杂度降到log 真是神奇. 在本题中,应该很快能 ...

  6. C++之路进阶——codevs1281(Xn数列)

    1281 Xn数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master       题目描述 Description 给你6个数,m, a, c, x0, n, ...

  7. 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 输入 ...

  8. 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 输入 ...

  9. Xn数列

     题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输 ...

随机推荐

  1. linux 开机自启动软件(包含xampp方法)

    linux设置apache和mysql: linux开启启动的程序一般放在/etc/rc.d/init.d/里面,/etc/init.d/是其软连接. mysql设为linux服务 cp /usr/l ...

  2. VB 语言学习笔记.

    暂时用到,学习学习. 变量声明 Dim 变量名 as 数据类型类型 Set 实例 = new 类名 自定义数据类型 Type 数据类型标识符 域名 As 数据类型; 域名 As 数据类型; 域名 As ...

  3. AXURE制作APP抽屉式菜单

    1.拖一个dynamic panel到窗体,将State1改名为State_首页: 2.拖2个dynamic panel到State_首页中,分别命名为侧边菜单及首页内容,首页内容盖住侧边菜单: 3. ...

  4. [HDOJ3367]Pseudoforest(并查集,贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3367 求一个无向图上权值最大的伪森林. 伪森林:一个图的连通子图,当且仅当这个子图有且仅有一个环. 既 ...

  5. Asp.net 后台添加Meta标签方法

    Asp.net 后台添加Meta标签方法包括keywords,CSS.JS 下面是从Asp.net 后台添加CSS.JS.Meta标签的写法,我们这里写成函数方便以后使用.如果函数放在页面类中, Pa ...

  6. asp.net 使用JQuery 调用Ashx 后面直接写方法名,通过反射找到对应的方法

    using System.Reflection; public class Industry_Manager : IHttpHandler { HttpRequest gRequest = null; ...

  7. (转)c语言_链表实例讲解(两个经典例子)

    建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. #include <stdio.h>#include <stdlib.h> struct grade {    ...

  8. Web API入门指南(安全)转

    安全检测的工具站点:https://www.owasp.org/index.php/Category:Vulnerability_Scanning_Tools Web API入门指南有些朋友回复问了些 ...

  9. wifi详解(五)

    1        Android平台的Wifi模块移植要点 1.1      Wifi结构 user interface Android WiFiService WPA_Supplicant DHD ...

  10. strcpy函数和strncpy函数的区别

    strcpy函数和strncpy函数的原型介绍在我的另一篇文章中介绍了,见strcpy,strncpy,strlen等函数原型 strcpy:字串复制 原型:char *strcpy(char *de ...