AC日记——青蛙的约会 poj 1061

青蛙的约会

POJ - 1061

思路:

  扩展欧几里得;

  设青蛙们要跳k步,我们可以得出式子

    m*k+a≡n*k+b(mod l)

   式子变形得到

      m*k+a-n*k-b=t*l

      (m-n)*k-t*l=b-a

    然后,exgcd函数求出k

    然后输出刚刚大于0的k即可

来,上代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

long long n,m,a1,b1,l,xx,yy;

long long exgcd(long long a,long long b,long long &x,long long &y)
{
    if(b==0)
    {
        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()
{
    scanf("%lld%lld%lld%lld%lld",&a1,&b1,&m,&n,&l);
    long long a=m-n,b=l,c=b1-a1;
    if(a<0) a=-a,c=-c;
    long long r=exgcd(a,b,xx,yy);
    if(c/r*r==c)
    {
        xx=xx*c/r,l=l/r;
        if(xx>0) xx=xx%l;
        else xx=xx%l+l;
        cout<<xx;
    }
    else cout<<"Impossible";
    return 0;
}
时间: 2024-11-10 17:04:15

AC日记——青蛙的约会 poj 1061的相关文章

青蛙的约会 - poj 1061(扩展欧几里得)

分析:这个东西在数论里面应该叫做不定方程式,可以搜一下,有很精彩的证明,先求出来方程式的一组特解,然后用这组特解来求通解,但是求出来特解之后怎么求这些解里面的最小非负x值?我们知道 x = x0 + bt, 假设x=0, 也就是最小值, 那么 t = x0/(-b), x0+x0/(-b)*b就是最小值了,当然如果结果是负的加上一个b即可. 代码如下: ========================================================================

青蛙的约会 POJ - 1061 (exgcd)

两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面. 我们把这两只青蛙分别叫做青蛙A和

青蛙的旅行 poj 1061

// 参考->青蛙的约会 exgcd解同余方程 定理证明->点我 1 /* 2 * @Promlem: 3 * @Time Limit: ms 4 * @Memory Limit: k 5 * @Author: pupil-XJ 6 * @Date: 2019-10-20 17:19:56 7 * @LastEditTime: 2019-10-20 18:52:09 8 */ 9 #include<cstdio> 10 #include<cstring> 11 #inc

AC日记——Destroying The Graph poj 2125

Destroying The Graph Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8356   Accepted: 2696   Special Judge Description Alice and Bob play the following game. First, Alice draws some directed graph with N vertices and M arcs. After that B

ACM: POJ 1061 青蛙的约会 -数论专题-扩展欧几里德

POJ 1061 青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰

POJ - 1061 青蛙的约会 (扩展欧几里得算法)

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面. 我们把这

poj 1061 青蛙的约会 (扩展欧几里得模板)

青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1061 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很

poj 1061 青蛙的约会(拓展欧几里德)

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面. 我们把这

POJ 1061 青蛙的约会【拓展欧几里得】

青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 97776   Accepted: 18462 链接:http://poj.org/problem?id=1061 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位