博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-4549 M斐波那契数列 && nyoj - 1000
阅读量:4286 次
发布时间:2019-05-27

本文共 1218 字,大约阅读时间需要 4 分钟。

运用费马小定理&&矩阵快速幂  求出 a , b 的个数

运用快速幂求解 a^num1 * b ^ num2 % MOD

#include
#include
typedef __int64 LL;#define MOD 1000000007#define mod 1000000006struct matrix//矩阵{ LL Matrix[2][2];};matrix s ={ 1,1, 1,0,};matrix m ={ 1,0, 0,1,};matrix matrix_multiplication(matrix a,matrix b)//矩阵乘法{ matrix c; for(int i = 0;i < 2;i ++) { for(int j =0;j < 2;j++) { c.Matrix[i][j] = 0; for(int k = 0;k < 2;k++) c.Matrix[i][j] = (c.Matrix[i][j] + a.Matrix[i][k]*b.Matrix[k][j]) % mod; } } return c;}matrix Fast_power1(LL n)//矩阵快速幂{ matrix ret = m,p = s; while(n) { if(n&1) ret = matrix_multiplication(ret,p); p = matrix_multiplication(p,p); n >>= 1; } return ret;}LL Fast_power2(LL x,LL num)//x^num%MOD的快速幂{ LL res = 1; while(num) { if(num&1) res = (res * x) % MOD; x = (x*x)%MOD; num>>=1; } return res;}int main(){ LL a,b,n,x,y; while(~scanf("%I64d%I64d%I64d",&a,&b,&n)) { matrix k; k = Fast_power1(n); LL x = k.Matrix[1][1],y = k.Matrix[1][0]; LL z = (Fast_power2(a,x) * Fast_power2(b,y))%MOD; printf("%I64d\n",z); }}

转载地址:http://vfsgi.baihongyu.com/

你可能感兴趣的文章
ionic 加载动作$ionicLoading 和加载动画 ion-spinner
查看>>
使用Git获取最新版本到本地
查看>>
Visual Studio 调试器“启用编辑并继续”
查看>>
Cordova页面解析页面中script标签内容失败,Refused to execute inline script because it violates the following
查看>>
Ionic 中使用iframe嵌入外网页面整理
查看>>
Cordova config.xml配置WebView全屏浏览
查看>>
VS Code插件安装位置
查看>>
Cordova Ajax请求跨域问题整理
查看>>
Ionic ion-nav-view使用整理
查看>>
angularjs unsafe ng-href using javascript: void(0);
查看>>
AngularJs ng-bind-html指令整理
查看>>
cordova-plugin-whitelist 协议白名单配置整理
查看>>
cordova-plugin-network-information 网络状态获取整理
查看>>
cordova-plugin-device 获取设备信息整理
查看>>
cordova-plugin-vibration 设备震动整理
查看>>
Cordova事件整理
查看>>
Apache Cordova开发环境搭建(二)VS Code
查看>>
NodeJs的安装和环境变量配置
查看>>
NodeJS命令找不到:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
查看>>
Visual Studio Code v1.16发布
查看>>