hdu 4565 So Easy!
来源:互联网 发布:网络高清云台摄像机 编辑:程序博客网 时间:2024/05/10 04:41
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4565
可以参考hdu2256解法类似:http://blog.csdn.net/hearthougan/article/details/24848401
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;struct Matrix{ LL iMatrix[2][2];};Matrix iPer, iCell;LL a, b, n, iMod;void Inite_Matrix(){ iPer.iMatrix[0][0] = iPer.iMatrix[1][1] = 1, iPer.iMatrix[0][1] = iPer.iMatrix[1][0] = 0; iCell.iMatrix[0][0] = iCell.iMatrix[1][1] = a, iCell.iMatrix[0][1] = b, iCell.iMatrix[1][0] = 1;}Matrix Multi_Matrix(Matrix a, Matrix b){ Matrix c; int i, j, k; for(i = 0; i < 2; ++i) { for(j = 0; j < 2; ++j) { c.iMatrix[i][j] = 0; for(k = 0; k < 2; ++k) { c.iMatrix[i][j] = (c.iMatrix[i][j]%iMod + ((a.iMatrix[i][k]%iMod) * (b.iMatrix[k][j]%iMod))%iMod)%iMod; } } } return c;}Matrix Quick_Mod_Matrix(LL n){ if(n == 1) return iCell; Matrix c, tmp; tmp = iCell; c = iPer; while(n) { if(n&1) { c = Multi_Matrix(c, tmp); n--; } n >>= 1; tmp = Multi_Matrix(tmp, tmp); } return c;}int main(){ Matrix c; while(~scanf("%lld %lld %lld %lld", &a, &b, &n, &iMod)) { Inite_Matrix(); c = Quick_Mod_Matrix(n); printf("%lld\n", (2*(c.iMatrix[0][0]%iMod)%iMod)); } return 0;}
0 0
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- hdu 4565So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 SO easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- HDU 4565 So Easy!
- 广州交警发布科目三电子路考操作要点
- win8.1 下 VS2013 + Emgu Cv 配置
- openstack, kvm, qemu-kvm以及libvirt之关系
- 城市公交查询-Api接口
- 设计模式总结-结构型模式
- hdu 4565 So Easy!
- 初识Android平台
- 广州交警发布路考秘籍 科目三扣分点近80项
- savanna的启动步骤
- 虚拟机linux 6.4 下yum的配置
- 关于自定义的achartengine中的折线图
- 函数尾调用优化(Tail-call Optimization)对DTrace return probe的影响
- 简单状态压缩 nyoj 81 炮兵阵地
- Fragments Android官方文档中文版