P2520 [HAOI2011]向量
题目描述
给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y)。
说明:这里的拼就是使得你选出的向量之和为(x,y)
输入输出格式
输入格式:
第一行数组组数t,(t<=50000)
接下来t行每行四个整数a,b,x,y (-2*10^9<=a,b,x,y<=2*10^9)
输出格式:
t行每行为Y或者为N,分别表示可以拼出来,不能拼出来
输入输出样例
3
2 1 3 3
1 1 0 1
1 0 -2 3
Y
N
Y
说明
样例解释:
第一组:(2,1)+(1,2)=(3,3)
第三组:(-1,0)+(-1,0)+(0,1)+(0,1)+(0,1)=(-2,3)
Solution:
首先,我们注意到题目中的向量实际只有4种操作:$$(a,b),(b,a),(a,-b),(b,-a)$$
于是由题意得方程组:
$$k(a,b)+q(b,a)+w(a,-b)+c(b,-a)=(x,y) --> (k+w)a+(q+c)b=x,(k-w)b+(q-c)a=y$$
由裴蜀定理可得:$$a*x+b*y=c$$
x和y有整数解的充要条件是$$gcd(a,b)|c$$
证明:令$$a=p*gcd(a,b),b=q*gcd(a,b)$$
则原式=$$(p*x+q*y)*gcd(a,b)=c$$
显然因为gcd(a,b)为整数,而要使x和y为整数,则gcd(a,b)|c。
我们回到开始的方程组$$(k+w)a+(q+c)b=x,(k-w)b+(q-c)a=y$$
由裴蜀定理易得:(k+w),(q+c),(k-w),(q-c)均为整数的充要条件是$$gcd(a,b)|x且gcd(a,b)|y$$
但是注意到(k+w),(k-w)有整数解不一定k和w有整数解((q+c)和(q-c)是同理的)。此时不妨设$$(k+w)=f,(k-w)=g$$
则$$k=(f+g)/2,w=(f-g)/2$$
因为$$2|(f+g)且2|(f-g)$$
显然要使$k$和$w$均为整数则$f$和$g$均为偶数或均为奇数($(q+c)$和$(q-c)$同理)。
于是我们考虑这四种情况:
1、当$(k+w),(k-w),(q+c),(q-c)$均为偶数时,$(k+w)a+(q+c)b=x$ 提公因数$2$结合 $gcd(a,b)|x -->gcd(a,b)*2|x$ 同理 $gcd(a,b)*2|y$
2、当$(k+w),(k-w)$为偶数,$(q+c),(q-c)$为奇数时,$(k+w)a+(q+c)b=x$先左右两边同加$b$,再提公因数$2$结合 $gcd(a,b)|x-->gcd(a,b)*2|x+b$ 同理$gcd(a,b)*2|y+a$
3、当$(k+w),(k-w)$为奇数,$(q+c),(q-c)$为偶数时,$(k+w)a+(q+c)b=x$先左右两边同加$a$,再提公因数$2$结合$gcd(a,b)|x-->gcd(a,b)*2|x+a$ 同理$gcd(a,b)*2|y+b$
4、当$(k+w),(k-w),(q+c),(q-c)$均为奇数时,$(k+w)a+(q+c)b=x$先左右两边同加$a+b$,再提公因数$2$结合$gcd(a,b)|x-->gcd(a,b)*2|x+a+b$同理 $gcd(a,b)*2|y+a+b$
只要满足上述的任意一种情况,则说明本题$k,w,q,c$有整数解,说明可行,否则说明无解。
代码:
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define debug printf("%d %s\n",__LINE__,__FUNCTION__)
using namespace std;
ll t,a,b,x,y,k;
il int gi()
{
ll a=;char x=getchar();bool f=;
while((x<''||x>'')&&x!='-')x=getchar();
if(x=='-')x=getchar(),f=;
while(x>=''&&x<='')a=a*+x-,x=getchar();
return f?-a:a;
}
il ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
il bool check(ll x,ll y){return x%k==&&y%k==;}
int main()
{
t=gi();
while(t--){
a=gi(),b=gi(),x=gi(),y=gi();
k=gcd(a,b)*;
if(check(x,y)||check(x+a,y+b)||check(x+b,y+a)||check(x+a+b,y+a+b))printf("YE5\n");
else printf("N0\n");
}
return ;
}
P2520 [HAOI2011]向量的更多相关文章
- luogu P2520 [HAOI2011]向量
传送门 一堆人说数论只会gcd,我连gcd都不会,菜死算了qwq Orzyyb 这题欺负我数学不好qwq 首先可以发现实际上有如下操作:x或y±2a,x或y±2b,x+a y+b,x+b y+a(后面 ...
- 【BZOJ2299】[HAOI2011]向量(数论)
[BZOJ2299][HAOI2011]向量(数论) 题面 BZOJ 洛谷 题解 首先如果我们的向量的系数假装可以是负数,那么不难发现真正有用的向量只有\(4\)个,我们把它列出来.\((a,b)(a ...
- 【BZOJ 2299】 2299: [HAOI2011]向量 (乱搞)
2299: [HAOI2011]向量 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1255 Solved: 575 Description 给你一 ...
- [HAOI2011]向量
题目描述 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量 ...
- 【[HAOI2011]向量】
靠瞎猜的数学题 首先我们先对这些向量进行一顿组合,会发现\((a,b)(a,-b)\)可以组合成\((2a,0)\),\((b,-a)(b,a)\)可以组合成\((2b,0)\),同理\((0,2a) ...
- BZOJ2299 [HAOI2011]向量 【裴蜀定理】
题目链接 BZOJ2299 题解 题意就是给我们四个方向的向量\((a,b),(b,a),(-a,b),(b,-a)\),求能否凑出\((x,y)\) 显然我们就可以得到一对四元方程组,用裴蜀定理判断 ...
- 牛客19985 HAOI2011向量(裴属定理,gcd)
https://ac.nowcoder.com/acm/problem/19985 看到标签“裴属定理”就来做下,很眼熟,好像小学奥数学过.. 题意:给你a,b,x,y,你可以任意使用(a,b), ( ...
- [HAOI2011] 向量 - 裴蜀定理
给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量(x,y) ...
- BZOJ2299: [HAOI2011]向量
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2299 题解:乱搞就可以了... 不妨认为有用的只有(a,b)(a,-b)(b,a)(b,-a) ...
随机推荐
- Struts2——第一个helloworld页面
struts2是一个较为成熟的mvc框架,先看看怎么配置struts2并且产生helloworld页面. 首先从官网下载struts2,http://struts.apache.org/downloa ...
- 利用jmeter进行数据库测试
1.首先,用jmeter进行数据库测试之前,要把oracle和mysql的JDBC驱动jar包放到jmeter安装路径的lib目录下,否则会提示错误 2.添加一个线程组,如下图 3.接下来添加一个JD ...
- g第十四周,十五周作业
1.数组中偶数的和 #include <stdio.h> int main(){ ; ]; ;i<=;i++) { scanf("%d ",&a[i]); ...
- C语言第十一次博客作业---函数嵌套调用
一.实验作业 1.1 PTA题目 题目:递归实现顺序输出整数 1. 本题PTA提交列表 2. 设计思路 printdigits函数 定义整型变量result存放结果 if n是10的倍数 result ...
- 1013团队Beta冲刺day1
项目进展 李明皇 今天解决的进度 点击首页list相应条目将信息传到详情页 明天安排 优化信息详情页布局 林翔 今天解决的进度 前后端连接成功 明天安排 开始微信前端+数据库写入 孙敏铭 今天解决的进 ...
- edittext实现自动查询,刷新listview
mEdittextqueryvalue.addTextChangedListener(new TextWatcher() { @Override pub ...
- 微信支付 chooseWXPay:fail
本来以为解决了微信支付get_brand_wcpay_request:faill这个问题后就万事大吉了,结果又迈入了另一个坑... 问题原因: 1.生成签名的时间戳参数名timestamp的s大小写问 ...
- ctf变量覆盖漏洞:
1.变量覆盖: ①:针对extract函数的变量覆盖漏洞: <?php @error_reporting(E_ALL^E_NOTICE); require('config.php'); if($ ...
- 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes
1.浅析整个监控流程 heapster以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.网络流量等,然后将这些数据输出到外部存储,如Inf ...
- 基于RNN的音频降噪算法 (附完整C代码)
前几天无意间看到一个项目rnnoise. 项目地址: https://github.com/xiph/rnnoise 基于RNN的音频降噪算法. 采用的是 GRU/LSTM 模型. 阅读下训练代码,可 ...