De ion
gcd遇到了一个头疼的问题,他得到了三个数 A,B,C(0 < A,B,C ≤ 10^9),
他想知道gcd(AB -1, AC -1)是否为1。
注: gcd(a,b)代表a和b的最大公因数。
如果最大公因数为1,则输出\"Yes\",否则输出\"No\"。

Input
第一行,一个整数t,代表测试样例总数
接下来t行,每行三个数,分别代表A,B,C。

Output
输出\"Yes\" or “No”

Sample Input
2
2 5 7
2 4 2

Sample Output
Yes
No

这题要知道a^b能分解出一个(a-1)的式子就好解了(o(╥﹏╥)o,反正我是没看出来)。当a>2时ab-1与ac-1恒有除1以外的公因数,因此必须先保证a等于2。而当a等于2的时候,又必须保证两个指数互质才可以(o(╥﹏╥)o,这毛学姐怎么看出来的┭┮﹏┭┮)因此还必须保证b和c互质。

#include<stdio.h>
int gcd(int a,int b){//定义求最大公因数函数
	int ex;
	while(a%b!=0){//开始辗转相除
		ex=a%b;
		a=b;
		b=ex;
	}
	return b;//返回最大公因数
}
int main()
{
	int a,b,c;
	int t;
	while(scanf(\"%d\",&t)!=EOF)
	{
		while(t--){
		scanf(\"%d %d %d\",&a,&b,&c);
		if(gcd(b,c)==1&&a==2)//判断是否满足条件
			printf(\"Yes\\n\");
		else
			printf(\"No\\n\");
	  }
	}
    return 0;
}```

收藏 打印