十进制快速幂(牛客多校第五场)-- generator 1
思路:
十进制快速幂。
- #include <stdio.h>//sprintf
- #include <cstdlib>////malloc exit strcat itoa system("cls")
- #include <iostream>//pair
- #include <fstream>
- #include <bitset>
- //#include <map> https://ac.nowcoder.com/acm/contest/885/B
- #include <vector>
- #include <stack>
- #include <set>
- #include <string.h>//strstr
- #include <string>
- #include <time.h>//srand(((unsigned)time(NULL))); Seed n=rand()%10 - 0~9;
- #include <cmath>
- #include <queue>//priority_queue<long long, vector<long long>, greater<long long> > q;
- #include <vector>
- //#include <math.h>
- //#include <windows.h> https://www.nitacm.com/problem_show.php?pid=222
- #include <algorithm>//sort + unique : sz=unique(b+1,b+n+1)-(b+1);+nth_element(first, nth, last, compare)
- using namespace std;
- #define pr printf
- #define sc scanf
- #define fo(a,b,c) for((a)=(b);(a)<=(c);(a)++)//register long long i
- #define fr(a,b,c) for((a)=(b);(a)>=(c);(a)--)
- #define mem(a,b) memset((a),(b),sizeof((a)))
- const double e=2.718281828;
- const double PI=acos(-1.0);
- const double ESP=1e-;
- const long long inf=;
- const long long N=;
- long long mod;
- const long long MAXN=;
- long long x0,x1,a,b,MOD;
- struct MAT
- {
- long long mat[MAXN][MAXN];
- MAT()
- {
- mat[][]=mat[][]=;//对角矩阵 E;
- mat[][]=mat[][]=;
- }
- MAT operator*(const MAT &a)const
- {
- MAT b;
- long long i,j,k;
- mem(b.mat,);
- fo(i,,MAXN-)
- {
- fo(j,,MAXN-)
- {
- fo(k,,MAXN-)
- {
- b.mat[i][j]=(b.mat[i][j]+mat[i][k]*a.mat[k][j]);
- b.mat[i][j]%=mod;
- }
- }
- }
- return b;
- }
- }transfer;
- MAT Mqpow(MAT x,long long n)
- {
- struct MAT temp;
- while(n)
- {
- if(n&)
- temp=temp*x;
- x=x*x;
- n>>=;
- }
- return temp;
- }
- char n[N];
- struct MAT mark[],start;
- int main()
- {
- sc("%lld%lld%lld%lld%s%lld",&x0,&x1,&a,&b,n,&MOD);
- // mem(transfer.mat,0);
- mod=MOD;
- transfer.mat[][]=a,transfer.mat[][]=b;
- transfer.mat[][]=,transfer.mat[][]=;
- start.mat[][]=x1,start.mat[][]=x0;
- mark[]=transfer;
- for(int i=;i<=;++i)
- mark[i]=transfer*mark[i-];
- int l=strlen(n);
- struct MAT ans;
- for(int i=;i<=l-;++i)
- {
- ans=Mqpow(ans,);
- ans=ans*mark[n[i]-''];
- }
- start=ans*start;
- pr("%lld\n",start.mat[][]%MOD);
- return ;
- }
十进制快速幂(牛客多校第五场)-- generator 1的更多相关文章
- 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂
理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...
- generator 1(2019年牛客多校第五场B题+十进制矩阵快速幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 十进制矩阵快速幂. 代码 #include <set> #include <map> #include <deque& ...
- 2019牛客多校第五场B generator 十进制快速幂
generator 1 题意 给出\(x_0,x_1,a,b\)已知递推式\(x_i=a*x_{i-1}+b*x_{i-2}\),出个n和mod,求\(x_n\) (n特别大) 分析 比赛的时候失了智 ...
- 牛客多校第五场B generator1(十进制矩阵快速幂)题解
题意: 已知 \(X_i = a * X_{i - 1} + b * X_{i - 2}\),现给定\(X_0,X_1,a,b\),询问\(X^n \mod p\),其中\(n <= 10^{1 ...
- 2019牛客多校第五场 B - generator 1 矩阵快速幂+十倍增+二进制倍增优化
B - generator 1 题意 给你\(x_{0}.x_{1}.a.b.b.mod\),根据\(x_{i} = a*x_{i-1} + b*x_{i-2}\)求出\(x_{n}\) 思路 一般看 ...
- 2019牛客多校第五场B-generator 1(矩阵快速幂)
generator 1 题目传送门 解题思路 矩阵快速幂.只是平时的矩阵快速幂是二进制的,这题要用十进制的快速幂. 代码如下 #include <bits/stdc++.h> #defin ...
- 牛客多校第五场 B generator 1 矩阵快速幂
题意: 给定$x_0,x_1,a,b,n,mod, x_i=a*x_{i-1}+b*x_{i-2}$ ,求$x_n % mod$ n最大有1e6位 题解: 矩阵快速幂. 巨大的n并不是障碍,写一个十进 ...
- 2019 牛客多校第五场 B generator 1
题目链接:https://ac.nowcoder.com/acm/contest/885/B 题目大意 略. 分析 十进制矩阵快速幂. 代码如下 #include <bits/stdc++.h& ...
- 牛客多校第五场 F take
链接:https://www.nowcoder.com/acm/contest/143/F来源:牛客网 题目描述 Kanade has n boxes , the i-th box has p[i] ...
随机推荐
- codeforces643D
阿狸的基环内向树森林 Background 当阿狸醒来的时候,发现自己处在基环内向森林的深处,阿狸渴望离开这个乌烟瘴气的地方.“明天还有与桃子的约会呢”,阿狸一边走一边说,“可是,这个森林的出口在哪儿 ...
- javaScript用正则来获取url传递的参数
用window.location.href获取url再js正则来获得需要的参数: 这个正则有多种写法,这里我选择这样写,要查找的属性名我直接以参数的形式传进去,用正则查找,以"?&# ...
- HDU 5884 Sort ——(K叉哈夫曼树)
这题真心比较奥义,先见这个人的博客:http://blog.csdn.net/libin66/article/details/52565484 补0的方法是使得其满足成为满K叉树,而其博客中所说的“所 ...
- OSI7层模型
为什么来写一个osi7层模型的随便呐? 因为自己对osi模型一点不熟悉 只知道里面的协议 要学渗透必先学习osi 这是一个osi7层的大体图片 接下来我们会对每一层进行详细的解答 这是五层模型 接下来 ...
- springMVC中的ModelAndView说明
ModelAndView 类别就如其名称所示,是代表了Spring Web MVC程式中呈现画面时所使用Model资料物件与View资料物件,由于Java程式中一次只能返回一个物件,所以ModelAn ...
- cin.clear()与cin.sync()的使用
cin.clear()与cin.sync()使用是有先后顺序的. 他们的作用: cin.clear(); //将流中的所有状态都重设为有效值 cin.sync();//清空流 在输入错误的情况下,如果 ...
- Angular5.0之 安装指定版本Angular CLI
我们可能会发现按照网上的方式下载安装后,使用Angular CLI生成的项目并不是我们想要的Angular的版本,因为在我们没有指定安装版本的前提下,默认会下载最新的版本安装,然而不同的Angular ...
- JNI的开发步骤
使用C函数实现Java本地方法: 1. 在java代码里面声明一个native的方法 public native String helloFromC(); 2. 在工程目录下面创建一个jni的文件夹 ...
- 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg, 字符串内的其他字符不改变,给定函数,编写函数 void Stringchang(const char*input,char*output)其中input是输入字符串,output是输出字符串
import java.util.Scanner; /*** * 1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg, 字符串内的其他字 ...
- WPF Slider Tickbar 中显示数值
class CustomTickBar : TickBar { protected override void OnRender(System.Windows.Media.DrawingContext ...