• POJ 2115 C Looooops


    题目描述

    题目要求就是求满足A+C*x≡B mod 2^k,移向得C*x≡B-A mod 2^k,这也就变成了求解同余方程的问题,即求满足C*x+2^k*y=B-A的x和y。

    类似于 青蛙的约会 那道题,令a=C,b=2^k,r=Gcd(a,b),扩展欧几里得算法求的是满足ax+by=gcd(a,b)的解,

    所以最后的答案为x*(c/r)%(b/r)。

    #include<complex>
    #include<cstdio>
    using namespace std;
    long long a,b,c,x,y;
    long long qread()
    {
        long long x=0;
        char ch=getchar();
        while(ch<'0' || ch>'9')ch=getchar();
        while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x;
    }
    long long Exgcd(long long a,long long b,long long &x,long long &y)
    {
        if(!b)
        {
            x=1;y=0;
            return a;
        }
        long long r=Exgcd(b,a%b,x,y),tmp=x;
        x=y;y=tmp-a/b*y;
        return r;
    }
    int main()
    {
        long long x1,x2;
        while(1)
        {
            x1=qread();x2=qread();a=qread();b=qread();
            if(x1+x2+a+b==0)break;
            b=1ll<<b;
            long long r=Exgcd(a,b,x,y),c=x2-x1;
            if(c%r)
            {
                puts("FOREVER");
                continue;
            }
            printf("%lld
    ",(x*(c/r)%(b/r)+b/r)%(b/r));
        }
        return 0;
    }
  • 相关阅读:
    Rate Control Mode
    帝国的困境:80-20法则
    ARM NEON 64bit 查找表替换
    Video Brightness Enhancement
    HDR(High Dynamic Range)
    C++ C++
    Machine Learning
    图像处理
    Facial landmark detection
    git
  • 原文地址:https://www.cnblogs.com/LeTri/p/9064382.html
Copyright © 2020-2023  润新知