zoukankan      html  css  js  c++  java
  • [HAOI2011]向量

    题目

    k(a,b)+q(b,a)+w(a,b)+c(b,a)=(x,y)
    (k+w)a+(q+c)b=x
    (kw)b+(qc)a=y
    裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。
    可得x+y=c
    x和y有整数解条件是 gcd(a,b)|c
    证明:令a=gcd(a,b),b=gcd(a,b)
    原式=(px+qy)gcd(a,b)
      =c
    因为gcd(a,b)为整数,要使x和y为整数,gcd(a,b)|c。
    (k+w)a+(q+c)b=x
    (kw)b+(qc)a=y
    (k+w),(q+c),(k-w),(q-c)均为整数的条件是gcd(a,b)|xgcd(a,b)|y
    但(k+w),(k-w)有整数解不一定k和w有整数解 q+c和q-c是同理的
    (k+w)=f,(kw)=g
    k=(f+g)/2,w=(fg)/2
     
    因为2|(f+g)2|(fg)要使kw均为整数则fg均为偶数或奇数
     
    #include<bits/stdc++.h>
    using namespace std;
    long long T,a,b,x,y,k;
    inline bool pd(long long x,long long y){
        if (x%k==0&&y%k==0)
            return true;
        else 
            return false;
    }
    int main(){
        scanf("%lld",&T);
        while (T--){
            scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
            k=__gcd(a,b)*2;
            if (pd(x,y)||pd(x+a,y+b)||pd(x+b,y+a)||pd(x+a+b,y+a+b))
                printf("Y
    ");
            else 
                printf("N
    ");
            //printf("%d",k);
        }
        return 0;
    }
    

      

  • 相关阅读:
    postfix遇到的问题
    SElinux以及防火墙的关闭
    centos查看系统信息
    WINDOWS访问SAMBA提示没有权限
    常用命令
    口才
    【李敖的管理经】
    随笔
    查询MX记录
    bash: ifconfig: command not found
  • 原文地址:https://www.cnblogs.com/wjnclln/p/10430683.html
Copyright © 2011-2022 走看看