zoukankan      html  css  js  c++  java
  • gcd

    更正:输出的顺序保证a<b

    更正:输出样例:0 1000000006

    /*
      斐波那契数列,步数为1的时候特判一下
      a<b 输出,真不知道题目想干什么,a是模之后的还是模之前的
    */
    #include<cstdio>
    #include<iostream>
    #define mod 1000000007
    #define ll long long
    using namespace std;
    ll b[3][3],c[3][3],ans[3][3];
    void work(ll n)
    {
        b[1][1]=ans[1][1]=0;
        b[1][2]=ans[1][2]=1;
        b[2][1]=ans[2][1]=1;
        b[2][2]=ans[2][2]=1;
        while(n)
        {
            if(n&1)
            {
                for(int k=1;k<=2;k++)
                  for(int i=1;i<=2;i++)
                    for(int j=1;j<=2;j++)
                      c[i][j]=(c[i][j]+(ans[i][k]%mod*b[k][j]% 
    mod))%mod;
                for(int i=1;i<=2;i++)
                  for(int j=1;j<=2;j++)
                    ans[i][j]=c[i][j],c[i][j]=0;
            }
            for(int k=1;k<=2;k++)
              for(int i=1;i<=2;i++)
                for(int j=1;j<=2;j++)
                  c[i][j]=(c[i][j]+(b[i][k]%mod*b[k][j]%mod))% 
    mod;
            for(int i=1;i<=2;i++)
              for(int j=1;j<=2;j++)
                b[i][j]=c[i][j],c[i][j]=0;
            n/=2;
        }
        ll ans1=(ans[1][2])%mod,ans2=(ans[1][1]+ans[1][2])%mod;
        cout<<min(ans1,ans2)<<" "<<max(ans1,ans2);
    }
    int main()
    {
        //freopen("jh.in","r",stdin);
        freopen("gcd.in","r",stdin);
        freopen("gcd.out","w",stdout);
        ll n;
        cin>>n;
        work(n);
        return 0;
    }
    View Code
  • 相关阅读:
    C++调用外部应用程序
    SVN文件加锁
    vs ComboBox显示多行
    __slots__ Python Class限制添加属性
    Python数据分析之pandas学习
    整理Lua和Unity和Lua交互文章链接
    [整理]Unity3D游戏开发之Lua
    ping telnet ssh netstat
    java rpc
    css 手机适配
  • 原文地址:https://www.cnblogs.com/harden/p/5934978.html
Copyright © 2011-2022 走看看