zoukankan      html  css  js  c++  java
  • hdu1005 矩阵快速幂

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<set>
    #include<queue>
    #include<vector>
    #include<map>
    using namespace std;
    #define ll long long 
    int m[2][2],a,b,n,t[2][2];
    int temp[2][2];
    void power(int x)
    {
        if(x==0)
        {
            m[0][0]=m[1][1]=1;
            m[1][0]=m[0][1]=0;
            return ;
        }
        if(x==1)
        {
            m[0][0]=a%7;
            m[0][1]=b%7;
            m[1][0]=1;
            m[1][1]=0;
            return ;
        }
        power(x>>1);
        for(int i=0;i<=1;i++)
        {
            for(int j=0;j<=1;j++)
            {
                temp[i][j]=0;
                for(int k=0;k<=1;k++)
                {
                    temp[i][j]=(temp[i][j]+(m[i][k]*m[k][j])%7)%7;
                }
             } 
        }
        if(x&1)
        {
        for(int i=0;i<=1;i++)
        {
            for(int j=0;j<=1;j++)
            {
                m[i][j]=0;
                for(int k=0;k<=1;k++)
                {
                    m[i][j]=(m[i][j]+(temp[i][k]*t[k][j])%7)%7;
                }
             } 
        }
    }
        else
        {
                for(int i=0;i<=1;i++)
        {
            for(int j=0;j<=1;j++)
            {
                m[i][j]=temp[i][j];
             } 
        }
        }
    
        for(int i=0;i<=1;i++)
        {
            for(int j=0;j<=1;j++)
            {
                m[i][j]=m[i][j]%7;
            }
        }
        return ;
    }
    
    int main()
    {
    
      while(scanf("%d%d%d",&a,&b,&n),a||b||n)
      {    
      
            t[0][0]=a%7;
            t[0][1]=b%7;
            t[1][0]=1;
            t[1][1]=0;
          if(n==1||n==2)
          {
          printf("1
    ");
          continue;
    }
          else
          {
              power(n-2);
              printf("%d
    ",(m[0][0]+m[0][1])%7);
          }
      }
      return 0;
     } 

    鸣谢https://blog.csdn.net/cambridgeacm/article/details/7703809

  • 相关阅读:
    Go panic+defer+recover理解加使用
    golang atomic包的使用
    Mongo 锁的理解
    AudioManager(录音)
    SAXpraseHelper
    Density
    CustomDialog
    CustomScrollVeiw(双向滑动)
    tf的concat问题
    tensorflow的gpu版本错误
  • 原文地址:https://www.cnblogs.com/hh13579/p/10950278.html
Copyright © 2011-2022 走看看