zoukankan      html  css  js  c++  java
  • codevs 1281 Xn数列 (矩阵乘法)

    /*
    再来个题练练手 
    scanf longlong 有bug.......
     
    */
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #define ll long long 
    using namespace std;
    ll n,m,x,y,x0,g;
    ll f[3][3],a[3][3];
    ll slow_mul(ll a,ll b,ll c)
    {
        ll ans=0;
        a=a%c;b=b%c;
        while(b)
          {
              if(b&1)
                {
                    b--;
                    ans+=a;
                    ans%=c;
              }
            a<<=1;a%=c;b>>=1;
          }
        return ans;
    }
    void mul(ll a[3][3],ll b[3][3])
    {
        ll c[3][3];
        memset(c,0,sizeof(c));
        for(int i=1;i<=2;i++)
          for(int j=1;j<=2;j++)
            for(int k=1;k<=2;k++)
              c[i][j]=(c[i][j]+slow_mul(a[i][k],b[k][j],m))%m;
        for(int i=1;i<=2;i++)
          for(int j=1;j<=2;j++)
            a[i][j]=c[i][j];
    }
    int main()
    {
        cin>>m>>x>>y>>x0>>n>>g;
        //scanf("%ld%ld%ld%ld%ld%ld",&m,&x,&y,&x0,&n,&g);
        f[1][1]=x0;f[1][2]=1;a[1][1]=x;a[1][2]=0;a[2][1]=y;a[2][2]=1;
        while(n)
          {
              if(n&1)mul(f,a);
              mul(a,a);
              n>>=1;
          }
        printf("%ld
    ",f[1][1]%g);
        return 0;
    }
  • 相关阅读:
    07组 Beta冲刺 (2/5)
    第07组 Beta冲刺 (1/5)
    第07组 Alpha冲刺 总结
    ES相关
    集群与分布式
    idea使用总结
    Tomcat配置与启动与访问
    Web基础
    B/S与C/S架构
    一周视频学习总结
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5554348.html
Copyright © 2011-2022 走看看