矩阵乘也是可以欧拉定理的HHH

所以幂次就是$(2^n-1) ~ mod ~ \varphi(p)$就好了

const ll p=1125899839733759ll;
inline ll mu(ll n,ll m,ll p){ll r=0;for(;m;m>>=1,n=(n+n)%p)if(m&1)r=(n+r)%p;return r;}
inline ll pw(ll n,ll m){ll r=1;for(;m;m>>=1,n=mu(n,n,p-1))if(m&1)r=mu(r,n,p-1);return r;}
#define prm(a) //{For(i,0,2)For(j,0,2)printf("%lld%c",(a)[i][j]," \n"[j==1]);}
template<int H>struct Matrix{
ll a[H][H];Matrix(ll t=0){For(i,0,H)For(j,0,H)a[i][j]=(i!=j?0:t);}
ll*operator[](const int&t){return a[t];}
Matrix operator*(const Matrix&t)const{
Matrix r;
For(k,0,H)For(i,0,H)For(j,0,H)
r[i][j]=(r[i][j]+mu(a[i][k],t.a[k][j],p))%p;
return r;
}
Matrix operator^(ll k){Matrix r(1),n=*this;prm(r);for(;k;k>>=1,n=n*n)if(k&1)r=r*n;return r;}
};
Matrix<2>a;
int main(){
int T;ll n;cin>>T;
while(T--){
cin>>n;
n=pw(2ll,n)-1;
a[0][0]=a[0][1]=a[1][0]=1,a[1][1]=0;
a=a^(n);
prm(a);
cout<<a[0][0]<<endl;
}
}

还有一个奇怪的操作:

$\sqrt{5}$ 在这个模数的意义下是存在的,所以直接带入 $f_n = \dfrac{\sqrt{5}}{5}[(\dfrac{\sqrt{5}+1}{2})^n+(\dfrac{1-\sqrt{5}}{5})^n]$

BZOJ 5118的更多相关文章

  1. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  2. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  3. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  4. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  5. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  6. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

  7. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  8. 【splay】文艺平衡树 BZOJ 3223

    Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3  ...

  9. bzoj 刷水

    bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...

随机推荐

  1. Vue(小案例_vue+axios仿手机app)_图片列表操作

    一.前言 1.让图片还没有被完全加载出来的时候给用户提示                                       2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...

  2. solr的搜索

    主要讲一下solr面板的使用: 查询 q:     查询用  语法: name:刘中华      支持通配符 ? 表示单个任意字符的通配 * 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号 ...

  3. IScroll某些手机下不触发ScrollEnd问题处理

    同样是微信7.0,看起来内核都是x5内核,两款不同的手机,一个有问题,一个没有问题. IScroll在问题手机下会出现快速拨动时候不触发ScrollEnd事件现象,轻点一次才会触发,解决办法 docu ...

  4. Django2.1,Xadmin2.0下的问题记录

    此篇博文长期更新…… 环境: Ubuntu18.04, Python3.6, Django2.1, Xadmin2.0 1. Xadmin添加用户小组件时报错:xadmin render() got ...

  5. 第29月第27天 Error: Multiple commands produce

    1. 解决方法可以有两种,一种是不使用New Build System,在File > Project/Workspace Settings中的Share Project/Workspace S ...

  6. iPhone8再MacOS上修改手机铃声

    1 选择下载好的mp3铃声文件,导入到itunes 2 将音乐改成AAA模式, 设置你的铃声时长 3 show in finder 找到文件,将mpr后缀修改成m4r,并删除掉mp3文件,将m4r文件 ...

  7. 6.linux安装tomcat

    1.下载安装包 https://tomcat.apache.org/download-80.cgi       2.用 WinSCP 将本地的安装包 上传到 linux 服务器中   3.解压安装包( ...

  8. 关于Linux的随笔笔记

    1.Ctrl+c.Ctrl+z和Ctrl+d的区别: Ctrl+c和Ctrl+z都是中断命令,但是他们的作用却不一样: Ctrl+c 是向当前进程发送SIGINT信号,用于终止进程: Ctrl+z 是 ...

  9. Scrapyd

    scrapyd 安装 scrapyd-中心节点,子节点安装scrapyd-clientpip3 install scrapydpip3 install scrapyd-client scrapyd-c ...

  10. 随机获取min和max之间的一个整数

    // 随机获取min和max之间的一个整数 const randomNum = (Min, Max) => { let Range = Max - Min; let Rand = Math.ra ...