数学专项matrix:UVa 10689
来源:互联网 发布:控制孩子上网软件 编辑:程序博客网 时间:2024/05/16 09:30
快速幂模板题。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef int matrix[3][3];int mod;int a,b,n,m;void mat_mul(matrix A,matrix B,matrix res){ matrix C; memset(C,0,sizeof(C)); for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) C[i][j]=(C[i][j]+A[i][k]*B[k][j])%mod; memcpy(res,C,sizeof(C));}void mat_pow(matrix A,int n,matrix res){ matrix a,r; memset(r,0,sizeof(r)); memcpy(a,A,sizeof(a)); for(int i=0;i<2;i++) r[i][i]=1; while(n) { if(n&1) mat_mul(r,a,r); n>>=1; mat_mul(a,a,a); } memcpy(res,r,sizeof(r));}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&a,&b,&n,&m); mod=1;for(int i=0;i<m;i++) mod*=10; a%=mod;b%=mod; if(n==0) { printf("%d\n",a); continue; } matrix A; A[0][0]=0;A[0][1]=1;A[1][1]=1;A[1][0]=1; mat_pow(A,n-1,A); int ans=(A[1][0]*a%mod+A[1][1]*b%mod)%mod; printf("%d\n",ans); } return 0;}
- 数学专项matrix:UVa 10689
- 数学专项matrix:UVa 11149
- 数学专项matrix:UVa 10655
- 数学专项matrix:UVa 11551
- 数学专项matrix:LA 2561
- 数学专项counting:UVa 11038
- 数学专项counting:UVa 10883
- 数学专项counting:UVa 10079
- 数学专项counting:UVa 10081
- 数学专项game_theory:UVa 12293
- 数学专项game_theory:UVa 11892
- 数学专项game_theory:UVa 11927
- 数学专项number_theory:UVa 10515
- 数学专项number_theory:UVa 10622
- 数学专项number_theory:UVa 10127
- 数学专项number_theory:UVa 10090
- 数学专项number_theory:UVa 10539
- 数学专项number_theory:UVa 11105
- 【最短路径-Floyd】hdu 2066 一个人的旅行
- ubuntu 下终端常用命令
- nyoj 61 传纸条
- C#用正则表达式判断字符串
- db2经典SQL语句大全
- 数学专项matrix:UVa 10689
- 浅谈数组和指针
- Oracle碎片简约处理
- 什么时候要用虚析构函数?
- hdu(2795)
- linux下安装sphinx
- ubuntu 常用命令
- WINCE6.0 CAB文件的制作与安装
- hdu4190(枚举法+二分法)