【codevs1281】Xn数列,矩阵乘法练习
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 大师 Master
题解
题目描述 Description
给你6个数,m, a, c, x0, n, g
Xn+1 = ( aXn + c ) mod m,求Xn
m, a, c, x0, n, g<=10^18
输入描述 Input Description
一行六个数 m, a, c, x0, n, g
输出描述 Output Description
输出一个数 Xn mod g
样例输入 Sample Input
11 8 7 1 5 3
样例输出 Sample Output
2
数据范围及提示 Data Size & Hint
int64按位相乘可以不要用高精度。
写在前面:数论!数论!
思路:
转移矩阵:
{a,1}
{0,1}
初始矩阵:
{Xn}
{ c }
要加一个无聊的乘法优化,要不会炸longlong
#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL m,a,c,x0,n,g;
struct matrix
{LL map[3][3];void clear(){memset(map,0,sizeof(map));}
};
LL cheng(LL x,LL y)//乘法优化,参照快速幂
{LL ans=0;while (y){if (y&1) ans=(ans+x)%m;x=(x+x)%m;y>>=1;}return ans;
}
matrix mul(matrix x,matrix y)//矩阵乘法
{matrix z;z.clear();for (int i=1;i<=2;i++)for (int j=1;j<=2;j++)for (int k=1;k<=2;k++)z.map[i][j]=(z.map[i][j]+cheng(x.map[i][k],y.map[k][j])%m)%m;return z;
}
main()
{scanf("%lld%lld%lld%lld%lld%lld",&m,&a,&c,&x0,&n,&g);matrix x,ans;//ans为初始,x为转移x.clear();ans.clear();ans.map[1][1]=x0;ans.map[2][1]=c;x.map[1][1]=a;x.map[1][2]=1;x.map[2][1]=0;x.map[2][2]=1;while (n){if (n&1) ans=mul(x,ans);x=mul(x,x);n>>=1;}printf("%lld",ans.map[1][1]%g);
}
【codevs1281】Xn数列,矩阵乘法练习相关推荐
- CODEVS1533 Fibonacci数列 (矩阵乘法)
嗯,,,矩阵乘法最基础的题了. Program CODEVS1250; type arr=array[1..2,1..2] of longint; var T,n,mo:longint;a,b:arr ...
- Xn数列(矩阵乘法+快速幂+慢速乘法)
Xn数列 题目描述: 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入描述: 一行 ...
- 剑指offer练习日志02:基于矩阵乘法求斐波那契数列通项
目录 一.矩阵乘法与斐波那契数列 1.利用数列的项构造二阶方阵 2.引入矩阵乘法 二.算法实现 1.MatrixFib对象成员变量 2.MatrixFib对象的构造函数 3. MatrixFib对象的 ...
- 浅谈斐波那契数列——从递推到矩阵乘法
说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...
- 斐波那契数列三种实现+矩阵乘法+矩阵cimi
package com.lyk.kk;/** * Created by Administrator on 2017/9/4. */ public class A1 {//矩阵乘法 public int ...
- NOJI 148 fibonacci数列(二) 矩阵乘法二分幂
第一次这样写以为不对的,自己撮合的着写的没想到对了,太激动了~.~ 点击打开链接 #include <stdio.h> #include <string.h> #include ...
- nssl1453-Fibonacci数列【矩阵乘法,线段树】
正题 题目大意 给出nnn和si(i∈[0..n−1])s_i(i\in[0..n-1])si(i∈[0..n−1]),对于大部分情况有sx=sx%ns_x=s_{x\%n}sx=sx%n. 有 ...
- jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
正题 题目大意 有递推式fi=∏j=1kfi−jbjf_{i}=\prod_{j=1}^kf_{i-j}^{b_j}fi=j=1∏kfi−jbj 给出f1∼kf_{1\sim k}f1∼k和 ...
- 【洛谷 P5550】 Chino的数列【矩阵乘法】
解题思路 矩阵乘法呀 考虑构造一个操作矩阵 CC[1234]\begin{bmatrix} 1&2&3&4\\ \end{bmatrix}[1234] 首先把特殊情况s ...
最新文章
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值
- HttpClient第一章(一)
- php excel cpu高,phpexcel读文件的时候cpu99%
- Linq入门演练---(1)基本用法-分组,排序,内连接
- _效率高的Linux管理员都会的10个关键技巧
- LeetCode 589. N叉树的前序遍历(前序遍历)
- Hepatology | 朱黎琴/于吉洋团队合作揭示新生儿肝脏发育中肝母细胞瘤转移的新机制...
- Android开发之 Android 的基本组件的概述
- Windows 7下的Excel 2010同时打开多个独立的窗口
- VK Cup 2018 Round 2: B. Three-level Laser(二分)
- LeetCode--026--删除排序数组中的重复项(java)
- mysql修改数据库字段数值_mysql修改数据库字段的操作
- 和平精英android怎么写符号,特殊符号输入方法 和平精英iOS和安卓名字特殊符号...
- 恭喜马斯克、纳德拉当选美国工程院院士,张宏江、方岱宁入选外籍院士
- 安卓的个性化彩色二维码的完美实现
- 实验05 指针及其在程序设计中的应用(2021级)
- 怎么实现在FireFox IE Opera Safari 都可以正常播放WMV和MOV的网页播放器代码
- ubuntu使用 ffmpeg 转换amr格式为mp3
- 算法为屠龙刀,设计模式为倚天剑
- 更新map中已存在的value值
热门文章
- 消息队列应用场景解析
- Spark之RDD理论篇
- 设计模式笔记二十四:模板模式
- python的自带的ide运行_为什么同样的语句在python自带的ide和pycharm中运行的结果不一样?...
- python的sleep_python的time.sleep()有多准确?
- java体系的四大基类_Java中的io流学习(了解四大基类和基本步骤)
- windows下python安装gmpy2_安装Python模块gmpy2中的问题解决
- python抽奖滚动界面_Python使用Tkinter实现转盘抽奖器的步骤详解
- c++ 二维数组_二维数组的声明2019_04_18
- 微信游戏脑力大乱斗92一个计算机,微信脑力大乱斗答案大全_全关卡图文攻略_软吧...