zoukankan      html  css  js  c++  java
  • POJ2115

    题目大意

    求同余方程Cx≡B-A(2^k)的最小正整数解

    题解

    可以转化为Cx-(2^k)y=B-A,然后用扩展欧几里得解出即可。。。

    代码:

    #include <iostream>
    using namespace std;
    typedef long long LL;
    void extended_gcd(LL a,LL b,LL &d,LL &x,LL &y)
    {
        if(!b)
        {
            d=a,x=1,y=0;
        }
        else
        {
            extended_gcd(b,a%b,d,y,x);
            y-=x*(a/b);
        }
    }
    int main()
    {
        LL a,b,k,c,x,y,d,p;
        while(cin>>a>>b>>c>>k&&a+b+c+k)
        {
            p=1LL<<k;
            extended_gcd(c,p,d,x,y);
            if((b-a)%d)
            {
                cout<<"FOREVER"<<endl;
                continue;
            }
            x=x*(b-a)/d;
            x=(x%(p/d)+p/d)%(p/d);
            cout<<x<<endl;
        }
        return 0;
    }

  • 相关阅读:
    PAT1038
    PAT1034
    PAT1033
    PAT1021
    PAT1030
    PAT1026
    PAT1063
    PAT1064
    PAT1053
    PAT1025
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/3229508.html
Copyright © 2011-2022 走看看