• POJ1061 青蛙的约会(线性同余方程)


    线性同余方程$ ax equiv b pmod n$可以用扩展欧几里得算法求解。

    这一题假设青蛙们跳t次后相遇,则可列方程:

    $$ Mt+X equiv Nt+Y pmod L$$ $$ (M-N)t equiv Y-X pmod L$$

    于是就构造出一个线性同余方程,即可对t求解,解出最小非负整数解。

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 #define mod(x,y) (((x)%(y)+(y))%(y))
     5 #define lld long long
     6 //a*x+b*y=gcd(a,b)
     7 lld exgcd(lld a,lld b,lld &x,lld &y){
     8     if(b==0){
     9         x=1; y=0;
    10         return a;
    11     }
    12     lld d=exgcd(b,mod(a,b),x,y);
    13     lld t=y;
    14     y=x-a/b*y;
    15     x=t;
    16     return d;
    17 }
    18 //ax¡Ôb (mod n)
    19 lld MLES(lld a,lld b,lld n){
    20     lld x,y;
    21     lld d=exgcd(a,n,x,y);
    22     if(b%d) return -1;
    23     return mod(x*(b/d),n/d);
    24 }
    25 
    26 int main(){
    27     lld x,y,m,n,l;
    28     scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
    29     lld res=MLES(m-n,y-x,l);
    30     if(res==-1) puts("Impossible");
    31     else printf("%lld",res);
    32     return 0;
    33 }
  • 相关阅读:
    Java EE javax.servlet中的ServletContext接口
    Java EE javax.servlet中的ServletConfig接口
    MD5加密工具
    redis常见数据操作
    Java文件上传与下载
    JSP技术
    spring集成swagger
    freemarker模板引擎的使用
    log4j生成日志
    Java自定义注解
  • 原文地址:https://www.cnblogs.com/WABoss/p/5179995.html
Copyright © 2020-2023  润新知