• LightOj 1096


    题目

    这道题是很简单的矩阵快速幂,可惜,在队内比赛时我不知什么时候抽风把模版中二分时判断的 ==1改成了==0 ,明明觉得自己想得没错,却一直过不了案例,唉,苦逼的比赛状态真让人抓狂!!!

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    int num,mod;
    struct matrix
    {
        int a[4][4];
    };
    
    matrix multiply(matrix x,matrix y)//矩阵乘法
    {
           matrix temp;
           for(int i=0;i<num;i++)
           {
                   for(int j=0;j<num;j++)
                   {
                           int ans=0;
                           for(int k=0;k<num;k++)
                           {
                                   ans+=((x.a[i][k]*y.a[k][j])%mod);
                           }
                           temp.a[i][j]=ans%mod;
                   }
           }
           return temp;
    }
    
    matrix calc(matrix origin ,matrix answ,int n)//n次矩阵快速幂
    {
         while(n)
         {
                 if(n%2==1)//原来比赛时一直是这里被我不小心改成了0,怪不得案例一直都过不了
                        answ=multiply(origin,answ);
                 origin=multiply(origin,origin);
                 n/=2;
         }
         return answ;
    }
    
    int main()
    {
        int a,b,n,c,t;
        scanf("%d",&t);
        for(int id=1;id<=t;id++)
        {
            num=4;mod=10007;
            scanf("%d%d%d%d",&n,&a,&b,&c);
            matrix origin={1,0,0,0,
                            0,0,1,0,
                            0,0,0,1,
                            c,b,0,a};
            matrix answ={1,0,0,0,
                        0,0,0,0,
                        0,0,0,0,
                        0,0,0,0};
            answ=calc(origin,answ,n-2);
            printf("Case %d: %d
    ",id,answ.a[3][0]);
        }
        return 0;
    
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    bootstrap
    Bootstrap面试题
    h5+css3 考试题
    less安装与使用
    css3(四)响应式 Web 设计 - 媒体查询
    css3(三)弹性布局
    css3(三)多列布局
    JavaScriptAPI初识
    Bootstrap面试题
    BS初识
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3558342.html
Copyright © 2020-2023  润新知