zoukankan      html  css  js  c++  java
  • hdu 6198(矩阵快速幂)

    number number number

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 175    Accepted Submission(s): 119


    暴力发现当4 12 33 88 232

    和斐波那契数列对比  答案为 第2*k+3个数减1

    直接用矩阵快速幂求的F[2*k+3]  然后减1

    A=1,B=0;

    然后矩阵快速幂2*k+3-1次得到F[2*k+3]

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<string.h>
     7 #include<map>
     8 #include<set>
     9 #include<queue>
    10 #include<vector>
    11 #include<cstdlib>
    12 typedef long long ll;
    13 typedef unsigned long long LL;
    14 using namespace std;
    15 const int INF=0x3f3f3f3f;
    16 const int num=100;
    17 const int mod=998244353;
    18 int N;
    19 struct Mat{
    20     ll a[num][num];
    21     void init(){
    22         memset(a,0,sizeof(a));
    23         for(int i=0;i<num;i++)
    24             a[i][i]=1;
    25     }
    26 };
    27 Mat mul(Mat a,Mat b){
    28     Mat ans;
    29     for(int i=0;i<N;i++){
    30     for(int j=0;j<N;j++){
    31         ans.a[i][j]=0;
    32         for(int k=0;k<N;k++){
    33             ans.a[i][j]+=a.a[i][k]*b.a[k][j];
    34         }
    35         ans.a[i][j]=ans.a[i][j]%mod;
    36     }
    37     }
    38     return ans;
    39 }
    40 Mat power(Mat a,int n){
    41     Mat ans;
    42     ans.init();
    43     while(n){
    44         if(n&1){
    45             ans=mul(ans,a);
    46         }
    47         n=n>>1;
    48         a=mul(a,a);
    49     }
    50     return ans;
    51 }
    52 int main(){
    53     int k;
    54     N=2;
    55     while(scanf("%d",&k)!=EOF){
    56         k=k*2+3;
    57         Mat aa;
    58         aa.a[0][0]=1;
    59         aa.a[0][1]=1;
    60         aa.a[1][0]=1;
    61         aa.a[1][1]=0;
    62         Mat ans=power(aa,k-1);
    63         ll t=((ans.a[0][0]-1)%mod+mod)%mod;
    64         cout<<t<<endl;
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    作为一个非计算机专业的人,你们是怎样进入IT行业的?
    第一次写博客
    变卖
    近2周关于Shadowing的总结
    二十九岁步入而立之年的思考
    最美的回忆漫天的雪
    有趣的房东夫妇
    遥远的思恋—我的儿子
    五年一轮回
    写在开工之前我的2010
  • 原文地址:https://www.cnblogs.com/Aa1039510121/p/7502798.html
Copyright © 2011-2022 走看看