BZOJ5118:Fib数列2(O1快速模)】的更多相关文章

Fib数列2 bzoj-5118 题目大意:求Fib($2^n$). 注释:$1\le n\le 10^{15}$. 想法:开始一看觉得一定是道神题,多好的题面啊?结果...妈的,模数是质数,费马小定理就tm完事了,将fib数列的通项公式列出来然后费马小定理... 最后,附上丑陋的代码... ...(照着郭爷一顿瞎jb敲) #include <iostream> #include <cstdio> #include <cstring> #include <algo…
题意:输入N,输出fib(2^N)%1125899839733759.(P=1125899839733759是素数) 思路:欧拉降幂,因为可以表示为矩阵乘法,2^N在幂的位置,矩阵乘法也可以降幂,所以有ans=a*base^num; num=2^N%(P-1). #include<bits/stdc++.h> #define ll long long using namespace std; ; inline ll mul(ll x,ll y,ll p){ return ((x*y-(ll)(…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5118 题解 这个题一看就是不可做的样子. 求斐波那契数列的第 \(n\) 项,\(n \leq 2^{10^{15}}\)??? 这样人怎么矩阵快速幂啊. 等等这个模数很神奇啊. \(1125899839733759\) 好像是一个质数,还以 \(9\) 结尾. 那么 \(5\) 对于 \(1125899839733759\) 一定有二次剩余咯. 那么根据 Fib 的通项公式 \[ f(n)…
题目大意:求$fib(2^n)$ 就是求fib矩阵的(2^n)次方%p,p是质数,根据费马小定理有 注意因为模数比较大会爆LL,得写快速乘法... #include<bits/stdc++.h> #define ll long long #define MOD(x) ((x)>=mod?(x-mod):(x)) using namespace std; ; ; ][];mtx(){memset(mp, , sizeof(mp));}}ans, base; ll n, T; inline…
特殊矩阵的幂同样满足费马小定理. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define int long long ')) c=getchar();return c;} ?n:…
题意 题目链接 题目链接 一种做法是直接用欧拉降幂算出\(2^p \pmod{p - 1}\)然后矩阵快速幂. 但是今天学习了一下二次剩余,也可以用通项公式+二次剩余做. 就是我们猜想\(5\)在这个模数下有二次剩余,拉个板子发现真的有. 然求出来直接做就行了 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se…
题目描述 Fib定义为Fib(0)=0,Fib(1)=1,对于n≥2,Fib(n)=Fib(n-1)+Fib(n-2) 现给出N,求Fib(2^n). 输入 本题有多组数据.第一行一个整数T,表示数据组数. 接下来T行每行一个整数N,含义如题目所示. n≤10^15, T≤5 输出 输出共T行,每行一个整数为所求答案. 由于答案可能过大,请将答案mod 1125899839733759后输出 样例输入 2231 样例输出 3343812777493853 题解 费马小定理+矩阵乘法 傻逼题,根据…
In the math class, the evil teacher gave you one unprecedented problem! Here f(n) is the n-th fibonacci number (n >= 0)! Where f(0) = f(1) = 1 and for any n > 1, f(n) = f(n - 1) + f(n - 2). For example, f(2) = 2, f(3) = 3, f(4) = 5 ... The teacher u…
用fib(n)表示斐波那契数列的第n项,现在要求你求fib(n) mod m.fib(1)= 1, fib(2)= 1. 输入格式 输入2个整数n(1≤n≤1018), m(2≤m≤10000000). 输出格式 输出fib(n)对m取模的值. 样例输入1 样例输出1 样例输入2 样例输出2 #include<bits/stdc++.h> using namespace std; typedef long long LL; struct matrix { LL a[][]; }; matrix…
斐波那契级数除以N会出现循环,此周期称为皮萨诺周期. 下面给出证明 必然会出现循环 这是基于下面事实: 1. R(n+2)=F(n+2) mod P=(F(n+1)+F(n)) mod P=(F(n+1) mod p +F(n) modp) mod p 2. 斐波那契数列的最大公约数定理:gcd(F(m),F(n))=F(gcd(m,n)) 最大公约数定理表明如果F(k)能被N整除,则F(ik)也能被N整除,这就表明了斐波那契数列所含因子的周期性,下面列举: 因子:2,3,4,5, 6,7,8,…