NOIP2017模拟赛 k-斐波(数学+欧几里得+矩阵乘法)
来源:互联网 发布:软件产品质量缺陷等级 编辑:程序博客网 时间:2024/06/03 22:48
水题 复习 扩欧&矩阵乘法
扩欧注意最终取模!
关于数学的题如果没有超过空间那么尽量开longlong
代码
#include<iostream>#include<algorithm>#include<cstdio>#include<queue>#include<cmath>#include<cstring>using namespace std;#define int long longtypedef int arr[3][3];arr a,ans,temp;int n,p;void cheng(arr a,arr b){ int i,j,k; memset(temp,0,sizeof(temp)); for(i=1;i<=2;i++){ for(j=1;j<=2;j++){ for(k=1;k<=2;k++){ temp[i][j]=(temp[i][j]+a[i][k]*b[k][j])%p; } } } memcpy(a,temp,sizeof(temp));}int ksm(int y){ if(y==1||y==0) return 1; while(y) { if(y&1) cheng(ans,a); y>>=1; cheng(a,a); } return (ans[1][1]+ans[2][1])%p;}int gcd(int a,int b,int &x,int &y){ if(b==0){x=1;y=0;return a; } int r=gcd(b,a%b,x,y); int tmp; tmp=x;x=y;y=tmp-a/b*y; return r;}main(){// freopen("kfib.in","r",stdin);// freopen("kfib.out","w",stdout); int i,j; ans[1][1]=ans[2][2]=1; a[1][2]=a[2][1]=a[2][2]=1; scanf("%lld%lld",&n,&p); int x,y; int an=ksm(n); int r=gcd(an,p,x,y); int cnt=0; if(p==1){if(n==1) cout<<1; else cout<<"None"; return 0; } if(an%p==0){ cout<<"None"; return 0; } x=(x+p)%p; cout<<x; return 0;}
阅读全文
0 0
- NOIP2017模拟赛 k-斐波(数学+欧几里得+矩阵乘法)
- 【JZOJ5335】【NOIP2017提高组模拟】早苗(DP、矩阵乘法)
- NOIP2017模拟赛 约瑟夫游戏(数学乱搞)
- 【jzoj5335】【NOIP2017提高A组模拟8.24】【早苗】【矩阵乘法快速幂】
- HDU4364(模拟矩阵乘法)
- bzoj2326 数学作业 矩阵乘法
- 【高科技数学原理】矩阵乘法
- 数学基础-线性代数-矩阵乘法
- [NOIP2017模拟][SCOI2005][bzoj1084]最大子矩阵
- NOIP2017模拟赛(二)总结
- NOIP2017模拟赛(三)总结
- NOIP2017模拟赛(四)总结
- NOIP2017模拟赛(五)总结
- NOIP2017模拟赛(六)总结
- NOIP2017模拟赛(七)总结
- NOIP2017模拟赛(八)总结
- NOIP2017模拟赛(九)总结
- NOIP2017模拟赛(十一)总结
- 【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第1章 课程介绍
- Hadoop入门1-输入输出流
- 方差、标准差、均方差、均方误差区别总结
- Fire!(UVA-11624)
- 【实战】android网页源代码查看器
- NOIP2017模拟赛 k-斐波(数学+欧几里得+矩阵乘法)
- 《Linux驱动开发详解》——LCD设备驱动重要数据结构及驱动框架
- js知识点 --01
- ubuntu16.04配置shadowsocks-libev
- 怎样写 Linux LCD 驱动程序
- windows8.1 keil uvision4 IDE jlink 可以烧程序但是 IDE停止工作
- centos7 + mariadb主从配置
- 求二叉树的前中后序递归、迭代,树的叶子节点,高度(c语言)
- mysql 数据批量插入效率