当前位置:网站首页>2022牛客多校六 J-Number Game(简单推理)
2022牛客多校六 J-Number Game(简单推理)
2022-08-08 23:06:00 【AC__dream】
题目:
样例输入:
3
2 4 3 1
2 4 3 2
4 2 2 0
样例输出:
Yes
No
Yes
题意:给定a,b,c,x,我们可以对a和b和c这三个数进行操作,我们可以把b变成a-b,也可以把c变成b-c,操作次数不受限制,问我们能不能把c变成x。
分析:
我们发现对b进行操作只能得到两种结果,一种是a-b,另一种是a-(a-b)=b,也就是b自己,所以无论对b进行多少次操作,b只能有这两种值,所以我们可以直接让a-=b,然后等价于c有两种操作,一种是把c变为a-c,另一种就是题目中所描述的,把c变为b-c,通过简单模拟我们发现我们不应该连续两次用同一个数减c,因为那样相当于没减,所以我们只能是交替着减c,那么也就有两种情况,一种是a-(……(b-(a-(b-(a-c))))),另一种是b-(……(a-(b-(a-(b-c))))),然后通过化简可以得到第一种情况对应着两个等式,一个是a+k*(a-b)-c=x另一个是k*(a-b)+c=x,第二种情况也对应着两个等式,一个是b+k*(b-a)-c=x,另一个是k*(b-a)+c=x,所以我们只要判断一下这四个等式是否有一个成立就可以了。注意特判a=b的情况
细节见代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=1e4+10;
int main()
{
int T;
cin>>T;
while(T--)
{
long long a,b,c,x;
scanf("%lld%lld%lld%lld",&a,&b,&c,&x);
bool flag=false;
a-=b;
if(a-b)
{
if((x-c)%(a-b)==0) flag=true;
if((x+c-a)%(a-b)==0) flag=true;
if((x+c-b)%(b-a)==0) flag=true;
}
else
{
if(x-c==0) flag=true;
if(x+c-a==0) flag=true;
if(x+c-b==0) flag=true;
}
if(flag) puts("Yes");
else puts("No");
}
return 0;
}
边栏推荐
猜你喜欢
Hi3516 使用 wifi模块
Kubernetes 资源核心原理
虚拟路由冗余协议VRRP——双机热备份基础
Qt入门(四)——连续播放图片(两种定时器的运用)
wps表格分两页断开怎么办?wps表格分两页断开的解决方法
You know you every day in the use of NAT?
MES docks with Simba to realize IMEI number writing and coupling test of Spreadtrum platform
人人熟知的IPV6竟然还有这么多细节
WeChat applet wx:for loop output example
meta learning
随机推荐
Kubernetes与OpenStack
MPLS Virtual Private Network Everywhere in Life
LeetCode:最长有效括号
PMP考点有哪些啊?
JS中数组扁平化的几种方法
二叉树 层次遍历 及例题
php 将时间戳转化为 刚刚、几分钟前、几小时前、几天前 格式
JSDay1-两数之和
【Verilog基础】PPA优化问题总结(含面积优化、速度优化)
makefile 自动编译 目录和子目录的 C文件
wsgw login packet capture record
wps表格下拉选项怎么添加?wps表格下拉选项的添加方法
同花顺的炒股软件买股票安全正规可信吗?
机器学习建模高级用法!构建企业级AI建模流水线
小程序banner图展示
flutter 基本类写法
JS中的作用域与作用域链
最详树莓派4B装机流程及ifconfig不到wlan0的解决办法
ArcPy设置全库唯一标识码
2021 RoboCom 世界机器人开发者大赛-本科组(决赛)7-4猛犸不上 Ban(最短路)