bzoj 2875: [Noi2012]随机数生成器
2016-03-22 22:55
459 查看
#include<cstdio> #include<iostream> #include<cstring> #define ll long long using namespace std; ll x[2][2],y[2][2],m,a,c,x0,n,g; ll chen1(ll a1,ll a2) { long long a3; if(!a2) return 0; a3=chen1(a1,a2>>1); a3=(a3+a3)%m; if(a2&1) a3=(a3+a1)%m; return a3; } void chen(ll x1[2][2],ll x2[2][2]) { long long x3[2][2]; memset(x3,0,sizeof(x3)); for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) x3[i][j]=(x3[i][j]+chen1(x1[i][k],x2[k][j]))%m; for(int i=0;i<2;i++) for(int j=0;j<2;j++) x1[i][j]=x3[i][j]; } int main() { scanf("%lld%lld%lld%lld%lld%lld",&m,&a,&c,&x0,&n,&g); x[0][0]=1; x[1][1]=1; y[0][0]=a; y[0][1]=c; y[1][1]=1; for(;n;) { if(n%2) chen(x,y); chen(y,y); n>>=1; } printf("%lld\n",(chen1(x[0][0],x0)+x[0][1])%m%g); return 0; }
矩阵乘法
相关文章推荐
- 如何关闭ubuntu alt快捷键
- Hadoop实战:*********MapReduce的性能调优(二)*********
- 第四道ACM程序题
- 自动化还是性能该怎么选择
- 基于ViewDragHelper的抽屉控件
- postgresql - 服务配置
- bzoj 2818: Gcd
- angular-表格
- Android Http简单使用实现登录校园网App
- 第4周项目5用递归的方法解决(4)
- shell 脚本设置文本颜色
- Android ListView同一个item显示2列的实现方法(仿2列商品列表)
- linux epoll事件模型详解
- 查看jar文件 的源码
- 窗口右下角消息弹出框
- bzoj 2809: [Apio2012]dispatching
- angular-过滤器
- P1063 数字串
- MMDrawerController 与 StoryBoard 构建和谐抽屉效果
- birt报表与现有系统的集成