• 吉首大学2019年程序设计竞赛(重现赛)- A SARS病毒 (矩阵,欧拉降幂)


    题目链接:https://ac.nowcoder.com/acm/contest/992/A

    题意:求出长度为n的字符串个数,字符串由A、C、G、T组成,其中A和C必须成对出现。

    思路:我们规定:   f[n][0]--长度为n的合法字符串个数

            f[n][1]--长度为n的A为奇数个的字符串个数

            f[n][2]--长度为n的C为奇数个的字符串个数

            f[n][3]--长度为n的A、C均为奇数个的字符串个数

       那么有如下转移方程:

        

       根据转移方程构建矩阵:

        

       就可以通过矩阵快速幂求得了,n太大了,继续思考:

       

       然后齐次线性递推得到:f[n][0]=4n-1+2n-1,之后欧拉降幂即可。

    AC代码:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    
    typedef long long LL;
    const int MOD=1e9+7;
    const int MOD1=1e9+6;
    
    char s[100005];
    
    LL qpow(LL a,LL b){
        LL ret=1;
        while(b){
            if(b&1) ret=ret*a%MOD;
            a=a*a%MOD;
            b>>=1;
        }
        return ret;
    }
    
    int main(){
        while(~scanf("%s",s)){
            LL tmp=0;
            for(int i=0;i<strlen(s);++i)
                tmp=(tmp*10+s[i]-'0')%MOD1;
            if(tmp>0) --tmp;
            else tmp=MOD1-1;
            tmp=qpow(2,tmp);
            printf("%lld
    ",tmp*(tmp+1)%MOD);
        }
        return 0;
    }
  • 相关阅读:
    TPLINK GPL code 简要分析
    Openwrt 初探
    物联网-手机远程控制家里的摄像头(3)
    物联网-手机远程控制家里的摄像头(2)
    lumia 520无法开机
    树莓派无法驱动移动硬盘
    Cannot Change Opencv Webcam Setting
    IIC协议理解(转)
    应用调试(六)记录回放输入子系统
    应用调试(五)侵入式SWI
  • 原文地址:https://www.cnblogs.com/FrankChen831X/p/11365107.html
Copyright © 2020-2023  润新知