• HDU4565


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4565

    题目大意:

      给出a,b,n,m,求出下式中的 Sn.

                                                        

    解题思路:

      

    AC代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 typedef long long ll;
     6 struct Matrix{
     7     ll mat[2][2];
     8 };
     9 Matrix Multiply(Matrix x,Matrix y,ll mod){
    10     Matrix temp;
    11     memset(temp.mat,0,sizeof(temp.mat));
    12     for(int i=0;i<2;i++){
    13         for(int j=0;j<2;j++){
    14             for(int k=0;k<2;k++){
    15                 temp.mat[i][j]+=(x.mat[i][k]*y.mat[k][j]);
    16                 temp.mat[i][j]%=mod;
    17             }
    18         }
    19     }
    20     return temp;
    21 }
    22 Matrix Fast_Power(Matrix a,ll m,ll mod){
    23     Matrix res;
    24     memset(res.mat,0,sizeof(res.mat));
    25     for(int i=0;i<2;i++)    res.mat[i][i]=1;
    26     while(m){
    27         if(m&1) res=Multiply(res,a,mod);
    28         m>>=1;
    29         a=Multiply(a,a,mod);
    30     }
    31     return res;
    32 }
    33 int main()
    34 {
    35     ll a,b,n,m;
    36     while(scanf("%lld%lld%lld%lld",&a, &b, &n, &m)==4){
    37         Matrix l={  a,1,
    38                     0,0 };
    39         Matrix r={  a,1,
    40                     b,a };
    41         r=Fast_Power(r,n-1,m);
    42         l=Multiply(l,r,m);
    43         printf("%lld
    ",(l.mat[0][0]*2)%m);
    44     }
    45     return 0;
    46 }
    View Code

      

    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    Python课程第三天作业
    Python课程第一天作业
    centos7安装Jenkins
    搭建zookeeper+kafka集群
    redis在实践中的一些常见问题以及优化思路
    部署redis4.0-cluster
    redis哨兵架构的基础知识及部署和管理
    Redis主从复制
    部署Redis4.x单机版及配置RDB和AOF持久化
    xshell使用密钥登陆linux
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7562571.html
Copyright © 2020-2023  润新知