• 扩展整数poj 1061 青蛙的约会 扩展欧几里得


    查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!

        第一次做扩展欧几里得。

         x+mt=y+nt+kl 化成 x-y=(n-m)*t+kl

        对右式做扩展欧几里得算法。若gcd(n-m,l)不能整除(x-y)。即不能相遇。 

        若能整除 则找到了一组解  

        当初要求小最的整数解。因为解群满意 (x+lcm/(n-m)*k)*(n-m)+(y+lcm/l*k)*l=d。

        所以x对lcm/(n-m)取模则为案答。若取模小于即是0 要需再加lcm/(n-m)

        

    
    

        

        

        每日一道理
    时间好比一条小溪,它能招引我们奔向生活的海洋;时间如同一叶扁舟,它将帮助我们驶向理想的彼岸;时间犹如一支画笔,它会指点我们描绘人生的画卷。

        #include <cstdio>

        #include <cstring>

        #include <cmath>

        using namespace std;

        int exgcd(int n,__int64 &x,int m,__int64 &y)

        {

        if(m==0)

        {

            x=1;

            y=0;

            return(n);

        }

        else

        {

            int ans=(exgcd(m,x,n%m,y));

            long long tmp=y;

            y=x-n/m*y;

            x=tmp;

            return(ans);

        }

        }

        int main()

        {

        int x,y,n,m,l;

        scanf("%d %d %d %d %d",&x,&y,&m,&n,&l);

        long long a1,a2;

        int ans=exgcd(n-m,a1,l,a2);

        if((x-y)%ans)

        {

            printf("Impossible\n");

        }

        else

        {

            long long tmp=l/ans;

            a1=a1*(x-y)/ans;

            a1%=tmp;

            if(a1<=0) a1+=tmp;

            printf("%lld\n",a1);

        }

        return 0;

        }

    文章结束给大家分享下程序员的一些笑话语录: 看新闻说中国输入法全球第一!领先了又如何?西方文字根本不需要输入法。一点可比性都没有。

  • 相关阅读:
    PHP 文件上传下载
    php文件类型MIME对照表
    如何书写安全的PHP代码
    wordpress顶部空白解决方案
    PHP发送邮件
    UTF8下面截取中文字符。
    dedecms 5.5 实现tag分页伪静态
    PHP MySQL 函数
    php异步调用
    归并排序及序列逆序数
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3052242.html
Copyright © 2020-2023  润新知