CF1538D.Another Problem About Dividing Numbers

传送门

思路

最多操作为将(a,b)都向(1)转化,次数为两者的质因子的幂次之和。
最少操作次数为将(a,b)都向(gcd(a,b))转化,次数为0~2
判断(k)是不是在两者之间即可。

代码

const int maxn=2e5+100;
 
int cul(int x){
	int res=0;
	for(int i=2;i*i<=x;i++){
		if(x%i==0){
			while(x%i==0) x/=i,res++;
		}
	}
	if(x>1) res++;
	return res;
}
 
int main(){
	int _=read;
	while(_--){
		int a=read,b=read,k=read;
		if(k==1){
			if(a==b) puts("NO");
			else if(a%b==0||b%a==0) puts("YES");
			else puts("NO");
			continue;
		}
		ll sum=cul(a)+cul(b);
		if(sum>=k) puts("YES");
		else puts("NO");
	}
	return 0;
}
 
原文地址:https://www.cnblogs.com/OvOq/p/14994241.html