BZOJ5118: Fib数列2(二次剩余)】的更多相关文章

题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5118 题解 这个题一看就是不可做的样子. 求斐波那契数列的第 \(n\) 项,\(n \leq 2^{10^{15}}\)??? 这样人怎么矩阵快速幂啊. 等等这个模数很神奇啊. \(1125899839733759\) 好像是一个质数,还以 \(9\) 结尾. 那么 \(5\) 对于 \(1125899839733759\) 一定有二次剩余咯. 那么根据 Fib 的通项公式 \[ f(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数列2 bzoj-5118 题目大意:求Fib($2^n$). 注释:$1\le n\le 10^{15}$. 想法:开始一看觉得一定是道神题,多好的题面啊?结果...妈的,模数是质数,费马小定理就tm完事了,将fib数列的通项公式列出来然后费马小定理... 最后,附上丑陋的代码... ...(照着郭爷一顿瞎jb敲) #include <iostream> #include <cstdio> #include <cstring> #include <algo…
5在1e9+9下有二次剩余,那么fib的通项公式就有用了. 已知Fn,求n.注意到[(1+√5)/2]·[(1-√5)/2]=-1,于是换元,设t=[(1+√5)/2]n,原式变为√5·Fn=t-(-1)n·t-1.同乘t并移项,可得t2-√5·Fn·t-(-1)n=0.讨论n的奇偶性,BSGS求二次剩余大力解方程即可.用BSGS求二次剩余是非常简单的,求出其以原根为底的离散对数即可. 注意二次剩余有正负两解,但似乎代进去正根(即√gk=gk/2)就行了,不太明白.以及题目要求最小解,BSGS的…
斐波那契数列的通项: \[\frac{1}{\sqrt{5}}((\frac{1+\sqrt{5}}{2})-(\frac{1-\sqrt{5}}{2}))\] 设T=\(\sqrt{5}*N\),\(y=\frac{\sqrt{5}+1}{2}\) 原式可化为\(y^n-(-\frac{1}{y}^n) \equiv T(mod\ p)\) 我们设\(t=y^n\) 原式可继续化为\(t-T*t \equiv (-1)^n(mod\ p)\) 然后我们对n进行奇偶讨论. 即分别求出\(t-T*…
特殊矩阵的幂同样满足费马小定理. #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:…
题目大意:求$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…
[BZOJ5104]Fib数列(BSGS,二次剩余) 题面 BZOJ 题解 首先求出斐波那契数列的通项: 令\(A=\frac{1+\sqrt 5}{2},B=\frac{1-\sqrt 5}{2}\),那么\(f[n]=\frac{1}{\sqrt 5}(A^n-B^n)\). 然后有\(A=-\frac{1}{B}\),所以有:\(f[n]=\frac{1}{\sqrt 5}((-\frac{1}{B})^n-B^n)\). 令\(x=B^n\),这里需要考虑一下\(n\)的奇偶性: 如果\…
题目描述 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 题解 费马小定理+矩阵乘法 傻逼题,根据…
目录 @description@ @solution@ @accepted code@ @details@ @description@ Fib数列为1,1,2,3,5,8... 求在Mod10^9+9的意义下,数字N在Fib数列中出现在哪个位置 无解输出-1 原题传送门. @solution@ 一个熟练的 OIer 选手应该能迅速发现 5 在模 10^9 + 9 意义下有二次剩余.考虑斐波那契通项公式: \[f_i = \frac{1}{\sqrt{5}}((\frac{1 + \sqrt{5}…