hdu 4686 Arc of Dream_矩阵快速幂
来源:互联网 发布:知乎的神回复 编辑:程序博客网 时间:2024/05/29 12:33
题意:略
构造出矩阵就行了
| AX 0 AXBY AXBY 0 |
| 0 BX AYBX AYBX 0 |
{a[i-1] b[i-1] a[i-1]*b[i-1] AoD[i-1] 1}* | 0 0 AXBX AXBX 0 | = {a[i] b[i] a[i]*b[i] AoD[i] 1}
| 0 0 0 1 0 |
| AY BY AYBY AYBY 1 |
#include <iostream>#include<cstdio>#include<cstring>using namespace std;#define LL __int64#define N 5#define m 1000000007 struct node{ LL mat[N][N]; node operator *(const node &x){ node tmp; memset(tmp.mat,0,sizeof(tmp.mat)); for(int i=0;i<N;i++) for(int k=0;k<N;k++) if(mat[i][k]) for(int j=0;j<N;j++){ tmp.mat[i][j]+=(mat[i][k]*x.mat[k][j])%m; tmp.mat[i][j]%=m; } return tmp; }}cat,b;void _pow(LL n){ while(n){ if(n&1) b=b*cat; cat=cat*cat; n>>=1; } //return b;}int main(int argc, char** argv) { LL a0,ax,ay,b0,bx,by; LL n; while(scanf("%I64d",&n)!=EOF){ scanf("%I64d%I64d%I64d",&a0,&ax,&ay); scanf("%I64d%I64d%I64d",&b0,&bx,&by); //printf("!%I64d %I64d %I64d\n",a0,ax,ay); //printf("!%I64d %I64d %I64d\n",b0,bx,by); memset(cat.mat,0,sizeof(cat.mat)); cat.mat[3][0]=cat.mat[4][4]=cat.mat[0][0]=1; cat.mat[1][1]=ax; cat.mat[4][1]=ay; cat.mat[2][2]=bx; cat.mat[4][2]=by; cat.mat[1][3]=ax*by%m; cat.mat[2][3]=ay*bx%m; cat.mat[3][3]=ax*bx%m; cat.mat[4][3]=ay*by%m; b.mat[0][0]=0; b.mat[0][1]=a0; b.mat[0][2]=b0; b.mat[0][3]=a0*b0%m; b.mat[0][4]=1; _pow(n); printf("%I64d\n",b.mat[0][0]); } return 0;}
- hdu 4686 Arc of Dream_矩阵快速幂
- hdu 4686 Arc of Dream(构造矩阵快速幂)
- hdu 4686 Arc of Dream 矩阵快速幂
- hdu 4686 Arc of Dream(矩阵快速幂)
- HDU 4686 Arc of Dream(矩阵快速幂)
- hdu 4686 Arc of Dream 矩阵快速幂
- Hdu 4686 Arc of Dream 矩阵快速幂
- HDU 4686 Arc of Dream 矩阵快速幂
- HDU 4686 Arc of Dream(矩阵快速幂)
- HDU - 4686 Arc of Dream 矩阵快速幂
- HDU 4686 Arc of Dream(矩阵快速幂)
- HDU 4686 Arc of Dream(矩阵快速幂)
- hdu 4686 Arc of Dream(矩阵快速幂)
- hdu 4686 Arc of Dream【矩阵快速幂】
- HDU 4686 Arc of Dream(矩阵快速幂)
- HDU 4686 Arc of Dream (矩阵快速幂)
- HDU 4686 Arc of Dream(矩阵快速幂)
- HDU 4686 Arc of Dream(矩阵快速幂!)
- Orale行列转置(摘抄)
- 点滴记录笔记_持续更新
- 如何动态设置窗口的光标
- Linux下查看文件和文件夹大小
- 面试题:最小数字
- hdu 4686 Arc of Dream_矩阵快速幂
- 应该远离的6个Java特性
- java基础学习day11
- java反射测试代码!枚举测试,beanUtils测试等....挺有用的。。。
- 如何参与Linux内核开发以及开发经验
- 利用 python 的 ElementTree 编辑 XML 文件
- 糖画机利润分析
- actionBar兼容2.1及以上版本的做法
- mysql触发器的三个示例