时间限制: 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数列,矩阵乘法练习相关推荐

  1. CODEVS1533 Fibonacci数列 (矩阵乘法)

    嗯,,,矩阵乘法最基础的题了. Program CODEVS1250; type arr=array[1..2,1..2] of longint; var T,n,mo:longint;a,b:arr ...

  2. Xn数列(矩阵乘法+快速幂+慢速乘法)

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

  3. 剑指offer练习日志02:基于矩阵乘法求斐波那契数列通项

    目录 一.矩阵乘法与斐波那契数列 1.利用数列的项构造二阶方阵 2.引入矩阵乘法 二.算法实现 1.MatrixFib对象成员变量 2.MatrixFib对象的构造函数 3. MatrixFib对象的 ...

  4. 浅谈斐波那契数列——从递推到矩阵乘法

    说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...

  5. 斐波那契数列三种实现+矩阵乘法+矩阵cimi

    package com.lyk.kk;/** * Created by Administrator on 2017/9/4. */ public class A1 {//矩阵乘法 public int ...

  6. NOJI 148 fibonacci数列(二) 矩阵乘法二分幂

    第一次这样写以为不对的,自己撮合的着写的没想到对了,太激动了~.~ 点击打开链接 #include <stdio.h> #include <string.h> #include ...

  7. 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​. 有 ...

  8. jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】

    正题 题目大意 有递推式fi=∏j=1kfi−jbjf_{i}=\prod_{j=1}^kf_{i-j}^{b_j}fi​=j=1∏k​fi−jbj​​ 给出f1∼kf_{1\sim k}f1∼k​和 ...

  9. 【洛谷 P5550】 Chino的数列【矩阵乘法】

    解题思路 矩阵乘法呀 考虑构造一个操作矩阵 CC[1234]\begin{bmatrix} 1&2&3&4\\ \end{bmatrix}[1​2​3​4​] 首先把特殊情况s ...

最新文章

  1. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值
  2. HttpClient第一章(一)
  3. php excel cpu高,phpexcel读文件的时候cpu99%
  4. Linq入门演练---(1)基本用法-分组,排序,内连接
  5. _效率高的Linux管理员都会的10个关键技巧
  6. LeetCode 589. N叉树的前序遍历(前序遍历)
  7. Hepatology | 朱黎琴/于吉洋团队合作揭示新生儿肝脏发育中肝母细胞瘤转移的新机制...
  8. Android开发之 Android 的基本组件的概述
  9. Windows 7下的Excel 2010同时打开多个独立的窗口
  10. VK Cup 2018 Round 2: B. Three-level Laser(二分)
  11. LeetCode--026--删除排序数组中的重复项(java)
  12. mysql修改数据库字段数值_mysql修改数据库字段的操作
  13. 和平精英android怎么写符号,特殊符号输入方法 和平精英iOS和安卓名字特殊符号...
  14. 恭喜马斯克、纳德拉当选美国工程院院士,张宏江、方岱宁入选外籍院士
  15. 安卓的个性化彩色二维码的完美实现
  16. 实验05 指针及其在程序设计中的应用(2021级)
  17. 怎么实现在FireFox IE Opera Safari 都可以正常播放WMV和MOV的网页播放器代码
  18. ubuntu使用 ffmpeg 转换amr格式为mp3
  19. 算法为屠龙刀,设计模式为倚天剑
  20. 更新map中已存在的value值

热门文章

  1. 消息队列应用场景解析
  2. Spark之RDD理论篇
  3. 设计模式笔记二十四:模板模式
  4. python的自带的ide运行_为什么同样的语句在python自带的ide和pycharm中运行的结果不一样?...
  5. python的sleep_python的time.sleep()有多准确?
  6. java体系的四大基类_Java中的io流学习(了解四大基类和基本步骤)
  7. windows下python安装gmpy2_安装Python模块gmpy2中的问题解决
  8. python抽奖滚动界面_Python使用Tkinter实现转盘抽奖器的步骤详解
  9. c++ 二维数组_二维数组的声明2019_04_18
  10. 微信游戏脑力大乱斗92一个计算机,微信脑力大乱斗答案大全_全关卡图文攻略_软吧...