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
  • 相关阅读:
    ubuntu的apt
    sudo命令
    MySQL导出数据到csv文件
    MySQL导出数据到文件报错
    git_backup.py gitlab项目备份
    java中图像与数组转换
    mongodb转elasticsearch
    impyla-0.14.2.2安装注意事项
    python3.7.3升级 with-openssl openssl-1.0.2a
    hadoop自带性能测试
  • 原文地址:https://www.cnblogs.com/harden/p/5934978.html
Copyright © 2011-2022 走看看