POJ 1061 扩展欧几里得

原创 2016年08月30日 18:29:32
#include"stdio.h"
#include"iostream"
#include"math.h"
#include"algorithm"

using namespace std;
typedef long long ll;

void gcd(ll a,ll b,ll &d,ll &x,ll &y)
{
    if(b==0){d=a;x=1;y=0;return;}
    ll x1,y1;
    gcd(b,a%b,d,x1,y1);
    ll t1,t2;
    t1=x1;t2=y1;
    x=t2;y=t1-(a/b)*t2;
}
/*
void gcd(ll a,ll b,ll &d,ll &x,ll &y)
{
    if(!b){d=a;y=0;x=1;}
    else{
        gcd(b,a%b,d,y,x);y-=(a/b)*x;
    }
}
*/
int main()
{
    ll m,n,l,x,y;
    while(scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l)==5)
    {
        ll a,b,c;
        a=m-n;b=l;c=(y-x);  //(x+dm)%l=(y+dn)%l;  同余然后用扩展欧几里得 解出x,y
        if(a<0)
        {
            a=-a;c=-c;
        }
        ll sx,sy,g;
        gcd(a,b,g,sx,sy);
        if(c%g)             //当 c不是最大公约数的整数倍的时候说明无解
        {
            puts("Impossible");continue;
        }
        b/=g;                     
        c/=g; //倍数
        ll t=c*sx;
        printf("%d\n",(t%b+b)%b);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ 2115 扩展欧几里得

C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21071 Accepted: 5717 Desc...
  • qq_22902423
  • qq_22902423
  • 2016年01月23日 15:05
  • 803

poj 1061 扩展欧几里得

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重...
  • u012342878
  • u012342878
  • 2014年07月20日 11:56
  • 233

poj 1061(扩展欧几里得)

青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 90299   Accepte...
  • my_acm
  • my_acm
  • 2014年08月14日 10:34
  • 453

POJ 1061 扩展欧几里得

青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K       Description 两只...
  • black_miracle
  • black_miracle
  • 2016年08月12日 22:48
  • 104

POJ 1061(扩展欧几里得)

初学,这是第一道题,略水。 首先还是自己理一理思路说一说扩展欧几里得。 欧几里得就不说了,相信大家都已经记住了,那什么又是扩展欧几里得呢? 我们知道ax+by=c是有很多组解的,那么我们先令t = c...
  • zzycsx
  • zzycsx
  • 2015年10月28日 22:10
  • 362

POJ 2142The Balance(扩展欧几里得)

The Balance Description Ms. Iyo Kiffa-Australis has a balance and only two kinds of weights to measu...
  • wust_xhj
  • wust_xhj
  • 2015年07月17日 13:47
  • 1038

POJ 1061 裸的扩展欧几里得

POJ 1061 C - C Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu Submit...
  • DT2131
  • DT2131
  • 2016年08月03日 13:23
  • 230

扩展欧几里得定理——POJ 1061

扩展欧几里得定理——POJ 1061
  • u013351484
  • u013351484
  • 2015年04月11日 22:04
  • 325

扩展欧几里得(poj 2115 poj 1061)

jumping_frog 欧几里德与扩展欧几里德算法 欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都...
  • sinat_36215255
  • sinat_36215255
  • 2017年05月22日 19:09
  • 126

青蛙的约会(poj1061+欧几里德+同余方程)

**青蛙的约会**Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 94174 Accepted: 174...
  • u010579068
  • u010579068
  • 2015年03月27日 19:34
  • 885
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1061 扩展欧几里得
举报原因:
原因补充:

(最多只允许输入30个字)