Description


求第n个prime Fibonacci:Fn3(modM)\frac{F_n}{3}\pmod M3Fn​​(modM)

Solution


一开始以为是整除。。结果是膜意义下的逆元啊我去
不知道能不能成功褥羊毛。。

首先对于斐波那契数列有一个性质就是f(gcd(a,b))=gcd(f(a),f(b))f(gcd(a,b))=gcd(f(a),f(b))f(gcd(a,b))=gcd(f(a),f(b)),这个的证明可以看一波这里
然后乱搞一波可以发现规律:f(a)是pf的当且仅当a是质数或a=4
那么我们矩阵快速幂一下,筛一下质数,然后质因数分解M求逆元,直接做就可以了。。

Code


#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#define rep(i,st,ed) for (register int i=st;i<=ed;++i)
#define drp(i,st,ed) for (register int i=st;i>=ed;--i)
#define fill(x,t) memset(x,t,sizeof(x))typedef long long LL;int p[500005];bool np[7368900];LL w[3][3],r[3][3],tmp[3][3];int read() {int x=0,v=1; char ch=getchar();for (;ch<'0'||ch>'9';v=(ch=='-')?(-1):(v),ch=getchar());for (;ch<='9'&&ch>='0';x=x*10+ch-'0',ch=getchar());return x*v;
}void pre(int n) {rep(i,2,n) {if (!np[i]) p[++p[0]]=i;for (int j=1;i*p[j]<=n&&j<=p[0];++j) {np[i*p[j]]=1;if (i%p[j]==0) break;}}
}LL ksm(LL x,LL dep,int MOD) {LL res=1;for (;dep;dep>>=1) {(dep&1)?(res=res*x%MOD):0;x=x*x%MOD;}return res;
}void write(LL x) {int wr[20]; wr[0]=0;do {wr[++wr[0]]=x%10;} while (x/=10);if (wr[0]<9) rep(i,1,9-wr[0]) putchar('*');if (wr[0]>9) wr[0]=9;drp(i,wr[0],1) putchar(wr[i]+'0');putchar('\n');
}int main(void) {pre(7368800); int n,m;while (~scanf("%d%d",&n,&m)) {int wjp=m; LL phi=m;for (int i=1;1LL*p[i]*p[i]<=m;++i) {if (wjp%p[i]==0) {while (wjp%p[i]==0) wjp/=p[i];phi=phi/p[i]*(p[i]-1);}}if (wjp!=1) phi=phi/wjp*(wjp-1);LL inv=ksm(3,phi-1,m);if (n==1) {write(2*inv%m); continue;}if (n==2) {write(1); continue;}if (n==3) {write(5*inv%m); continue;}r[1][1]=0; r[1][2]=r[2][1]=r[2][2]=1;w[1][1]=w[2][2]=1; w[1][2]=w[2][1]=0;for (int dep=p[n];dep;dep>>=1) {if (dep&1) {tmp[1][1]=tmp[1][2]=tmp[2][1]=tmp[2][2]=0;rep(i,1,2) rep(j,1,2) {rep(k,1,2) tmp[i][j]=(tmp[i][j]+w[i][k]*r[k][j]%m)%m;}rep(i,1,2) rep(j,1,2) w[i][j]=tmp[i][j];}tmp[1][1]=tmp[1][2]=tmp[2][1]=tmp[2][2]=0;rep(i,1,2) rep(j,1,2) rep(k,1,2) tmp[i][j]=(tmp[i][j]+r[i][k]*r[k][j]%m)%m;rep(i,1,2) rep(j,1,2) r[i][j]=tmp[i][j];}write(w[2][1]*inv%m);}return 0;
}

小米 OJ 编程比赛 03 月常规赛 小爱密码 2.0相关推荐

  1. 灯——小米 OJ 编程比赛 01 月常规赛 (思维)

     灯 序号:#125                      难度:有挑战                   时间限制:1000ms                  内存限制:32M 描述 一个 ...

  2. 小米OJ 141. 小爱密码 2.0

    题目描述: 求解Prime Fibonacci 数列 P 的第 N 位(即该数列中不能被别的 Fibonacci 数整除的数). (P1=2,P2=3,P3=5,P4=13⋯)(P_1=2, P_2= ...

  3. 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解

    本文前面的部分讲的是博弈论简单理论与SG函数SG定理的一些理解,后面对小米OJ赛题做详细剖析,最后给出代码的详细解读. 目录 博弈论 P-Position与N-Position SG函数与SG定理 S ...

  4. 2022年3月Python小屋编程比赛获奖名单

    开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"第6次开课时间 董付国老师Python系列教材推荐与选用参考 ============= ...

  5. 2022年2月Python小屋编程比赛获奖名单

    开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"免费学习地址 推荐图书: <Python程序设计基础(第2版)>,ISBN: ...

  6. 2021年12月Python小屋编程比赛获奖名单

    首先祝所有朋友元旦快乐,在新的一年里天天开心,在技术上每天都有新突破! 中国大学MOOC"Python程序设计基础"免费学习地址 推荐图书: <Python程序设计基础(第2 ...

  7. 2021年11月Python小屋编程比赛获奖名单

    中国大学MOOC"Python程序设计基础"第5次开课 推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社 ...

  8. 2021年10月Python小屋编程比赛获奖名单

    全国高校教师Python课程高级研修班(线上,11月20-21日) 中国大学MOOC"Python程序设计基础"第5次开课 推荐图书: <Python程序设计基础(第2版)& ...

  9. 2021年8月Python小屋编程比赛获奖名单

    推荐图书: <Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社,第19次印刷,清华大学出版社2019.2020年度畅销图书,山东省高等教育 ...

最新文章

  1. 苏黎世大学 AI 新研究:仅用少量样本生成高质量光声图像
  2. C 关于unsigned int compzero = ~0;与unsigned int compzero = 0xFFFF; 的区别!
  3. .NET异步方法调用的例子
  4. 如何搭建Electron开发环境
  5. leetcode 191. 位1的个数(移位操作)
  6. 工厂模式个人案例_工厂设计模式案例研究
  7. Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)
  8. makefile 打印变量_通过实例学Makefile
  9. 安装oracle时的x问题
  10. 树的平衡之AVL树——错过文末你会后悔,信我
  11. 用Markdown格式写一份前端简历
  12. 分享一下关于拼多多商品详情SKU解析思路以及如何解决
  13. LoadBalancer 负载均衡
  14. Building fresh packages...
  15. Auto.js学习笔记2:真机连接vscode开发工具进行调试,自动开启微信app,自动切换通讯录和微信界面
  16. python编写网页美化_五 使用并美化网页文本
  17. 利用sklearn中 ID3算法实现简单的课程销量预测+决策树可视化
  18. 研二小硕的艰难实习路
  19. 头文件和库文件区别,动态库和静态库的区别,动静态库的生成
  20. 不能简单用红海或蓝海看民用安防市场

热门文章

  1. 基岩版服务器开启坐标显示,基岩版官方服务端MOD的安装和编写
  2. 简单实现strtol函数
  3. 2020年总结,适应与蜕变的开始!!
  4. html5+css3面试问题,html5+css3+基础JavaScript语法面试题
  5. ROS_LOCALHOST_ONLY变量
  6. Go 通过for循环遍历数组并修改值,注意事项:
  7. JavaScript中的This 关键字
  8. 3.27 分享两个在PC上浏览小红书内容的方法【玩赚小红书】
  9. 青岛瑞吉酒店正式开业,坐落于369米高的青岛国信·海天中心
  10. 【面试题】七行代码解决酒店老板用瓶子盖子换酒问题