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) ...
随机推荐
- CSS服务器字体
1,首先要下载ttf文件 推荐下载网站: https://www.dafont.com/ 2,写css样式 3,服务器字体 font-family:自己随便取个名字就行 注意url里的ttf文件和f ...
- hibernate框架学习笔记5:缓存
缓存不止存在与程序中,电脑硬件乃至于生活中都存在缓存 目的:提高效率 比如IO流读写字节,如果没有缓存,读一字节写一字节,效率低下 hibernate中的一级缓存:提高操作数据库的效率 示例: 抽取的 ...
- Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏
云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习案例来讲确实是一个绝佳的 Spring ...
- 使用linux下的crontab定时任务跑定时脚本
使用linux下的crontab定时任务跑定时脚本 tags:定时任务 定时脚本 crontab linux定时脚本 linux 引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的.我们这次就来说 ...
- 【Alpha版本】冲刺阶段 - Day7 - 靠泊
Alpha:指集成了主要功能的第一个试用版本.在这个版本中有些小功能并未实现.事实上很多软件的 Alpha 版本只是在内部使用.给外部用户使用的 Alpha 版本会起一个比较美妙的名字,例如,技术预览 ...
- 数据结构——线性表——队列(queue)
队列也是一种特殊的线性表,它的特点是先入先出(FIFO,即first in first out).它的意思也很直观,想象一下排队买票,先排的人先买(插队是不对的,所以别去想).它也是很常用的数据结构, ...
- Django Haystack 全文检索与关键词高亮
Django Haystack 简介 django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr.Elasticsearch.Whoosh.Xapian 等多 ...
- hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
环境:weblogic10.3.5,hibernate3,GGTS(groovy/grails tools suite):出现这问题是因为该项目是从weblogic8.1.6下移植到weblogic1 ...
- vue的简单tab
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...
- tcltk控制chariot进行测试 couldn't load library "ChariotExt": invalid argument
解决办法:和tcl版本有关,我的chariot应该是32位的,下载win32-ix86的tcl解决了,用64位的有这个错误提示. ActiveTcl8.6.4.1.299124-win32-ix86- ...