Gcd 2023牛客暑期多校训练营6 G

登录---专业IT笔试面试备考平台_牛客网

题目大意:给出一个集合,集合中初始有2个数x,y(x!=y),每次操作可以将集合中任意两个不等的数的差放入集合或者将两个不等的数的gcd放入集合,给出一个数z,问z有没有可能出现在集合里

1<=t<=1e5;0<x,y,z<=1e9

思路:不妨令x>y,因为我们可以得到x,y的最大公因数,然后我们可以用x不断减去最大公因数就能得到小于x的所有是gcd的倍数的数,但因为两个相间的数不能相等,所以如果初始两个数中没有0就得不到0,然后用1倍gcd减二倍gcd就能得到负一倍的gcd,再用y-负数就能得到所有大于y的gcd的倍数,所以只要z不等于0且z是gcd的倍数,就能输出YES

cpp 复制代码
//#include<__msvc_all_public_headers.hpp>
#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b)
{
	return b ? gcd(b, a % b) : a;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		int x, y, z;
		cin >> x >> y >> z;
		int gc = gcd(x, y);
		if (z == 0 && x != 0 && y != 0)
		{//z等于0且x,y里面没有0
			cout << "NO" << endl;
			continue;
		}
		if (z % gc == 0)
		{
			cout << "YES" << endl;
		}
		else
		{
			cout << "NO" << endl;
		}
	}
	return 0;
}
相关推荐
郝学胜-神的一滴21 分钟前
Qt重复添加控件问题探析:现象、原理与解决方案
开发语言·数据库·c++·qt·程序人生
凌乱风雨121128 分钟前
从源码角度解析C++20新特性如何简化线程超时取消
前端·算法·c++20
阿猿收手吧!28 分钟前
【音视频】HLS 协议详细解析
c++·音视频
Jim-2ha036 分钟前
【平面几何】判断一个点是否在任意多边形的内部
算法
寻星探路36 分钟前
网络原理全景图:从通信起源到 TCP/IP 体系架构深度拆解
java·网络·c++·python·tcp/ip·http·架构
橘颂TA38 分钟前
【剑斩OFFER】算法的暴力美学——合并 k 个升序链表
算法·leetcode·牛客·结构与算法
前端小L38 分钟前
双指针专题(五):灵活的起跳——「无重复字符的最长子串」
javascript·算法·双指针与滑动窗口
爪哇部落算法小助手1 小时前
每日两题day67
c++·算法
hk11241 小时前
【BioTech/SystemArch】2026年度高可靠性医疗架构与生物遗传算法基准索引 (Benchmark Index)
算法·系统架构·数据集·生物信息学·垃圾回收
你撅嘴真丑1 小时前
短信计费 和 甲流病人初筛
数据结构·c++·算法