zoukankan      html  css  js  c++  java
  • A Simple Math Problem HDU1757

    一次ac

    在做递推关系的题目的时候  快速幂矩阵真的很有用

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,k;
    struct matrix{
        int arr[10][10];
    };
    
    matrix multi( matrix a, matrix b )
    {
             matrix c;
        for(int i=0;i<10;i++)
            for(int j=0;j<10;j++){
                c.arr[i][j]=0;
                for(int w=0;w<10;w++)
                    c.arr[i][j]=(c.arr[i][j]+a.arr[i][w]*b.arr[w][j]%k)%k;
            }
        return c;
    }
    
    int fast(matrix a,int x){
        matrix ans;
        memset(ans.arr,0,sizeof(ans.arr));
        for(int i=0;i<10;i++)ans.arr[i][i]=1;
    
        while(x){
            if(x&1){
                ans=multi(ans,a);
                   }
            x>>=1;
            a=multi(a,a);
        }
        int sum=0;
        for(int i=0;i<10;i++)
        {
            sum+=ans.arr[0][i]*( 9-i );
            sum%=k;
        }
      return sum;
    }
    int main(){
    
       while(scanf("%d%d",&n,&k)==2)
       {
    
           if(n<10){ printf("%d
    ",n%k); continue; }
    
         matrix  temp;
         memset(temp.arr,0,sizeof(temp.arr) );
         for(int i=1;i<10;i++)
            temp.arr[i][i-1]=1;
            for(int i=0;i<10;i++)scanf("%d",&temp.arr[0][i] );
    
         printf("%d
    ",fast( temp , n-9 )%k );
       }
        return 0;
    }
    View Code
  • 相关阅读:
    使用指针的误区之指针未初始化
    实验室react项目名词解释
    生活感悟之大学
    git 快速入门
    口才锻炼
    narcissus
    crest value &minimum
    factorial
    Str_turn
    array_x
  • 原文地址:https://www.cnblogs.com/bxd123/p/10349164.html
Copyright © 2011-2022 走看看