• CF787A


     1 /*
     2  CF787A - The Monster
     3  http://codeforces.com/contest/787/problem/A
     4  数学 扩展欧几里得
     5  注意x或y为0的时候要特判
     6  并且结果要大于b和d
     7  */
     8 #include <cstdio>
     9 int ex_gcd(int a,int b,int &x,int &y)//solve x,y in a*x+b*y=ex_gcd(a,b,x,y)=gcd(a,b);
    10 {
    11     if(b==0)
    12     {
    13         x=1;
    14         y=0;
    15         return a;
    16     }
    17     int ans=ex_gcd(b,a%b,x,y);
    18     int tmp=x;
    19     x=y;
    20     y=tmp-a/b*y;
    21     return ans;
    22     //x = x0 + (b/gcd)*t
    23     //y = y0 – (a/gcd)*t
    24      
    25 }
    26 int main()
    27 {
    28     int a,b,c,d;
    29     scanf("%d%d%d%d",&a,&b,&c,&d);
    30     int l=d-b;
    31     int x,y;
    32     if((b-d)%c==0 && (b-d)/c>=0 )//特判x==0时
    33     {
    34         printf("%d
    ",b);
    35         return 0;
    36     }   
    37     if((d-b)%a==0 && (d-b)/a>=0 )//特判y==0时
    38     {
    39         printf("%d
    ",d);
    40         return 0;
    41     }
    42     int gcd=ex_gcd(a,c,x,y);
    43     if(l%gcd)
    44     {
    45         printf("-1
    ");
    46         return 0;
    47     }
    48     x*=l/gcd;
    49     c/=gcd;
    50     if(c<0)
    51         c=-c;
    52     x%=c;
    53     while(x<=0 || b+x*a<d)//结果要大于b和d
    54         x+=c;
    55     printf("%d
    ",b+x*a);
    56     return 0;
    57 }
  • 相关阅读:
    用js实现双色球
    nodejs_理解Buffer
    nodejs_buffer.copy
    nodejs_buffer.concat
    nodejs_buffer.alloc
    Ant Design Pro v4 最新版安装(跳过所有坑)
    python eventlet详解
    python 超时重试方法
    pycharm配置react
    Python性能优化的20条建议
  • 原文地址:https://www.cnblogs.com/BBBob/p/6611450.html
Copyright © 2020-2023  润新知