其他分享
首页 > 其他分享> > CF1294C

CF1294C

作者:互联网

题目简化和分析:

使得 \(a \times b\times c=n~~~~(a\ne b\ne c)\)

思路:

  1. 先枚举最小的 \(a\) ,(以下程序的返回值为最小因数(有部分优化),即 \(a\) 的值)
int query(int n){
	if(n%2==0) return 2;
	for(int i=3;i<=sqrt(n);i+=2){
		if(n%i==0) return i;
	}
	return n;
} 
  1. 再枚举最小的 \(b\) ,(同理)
		for(int i=a+1;i<=sqrt(n);i++){
			if(n%i==0){
				b=i;
				break;
			}
		}
  1. 得到 \(c\) ,并判断是否符合条件

Solution:

#include<bits/stdc++.h>

using namespace std;

int t,n;

int query(int n){
	if(n%2==0) return 2;
	for(int i=3;i<=sqrt(n);i+=2){
		if(n%i==0) return i;
	}
	return n;
}

int main()
{
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		int a=query(n),b=-1,c=-1;
		n/=a;
		for(int i=a+1;i<=sqrt(n);i++){
			if(n%i==0){
				b=i;
				break;
			}
		}
		c=n/b;
		if(b==-1||c==-1||b==c){
			printf("NO\n");
		}else{
			printf("YES\n");
			printf("%d %d %d\n",a,b,c);
		}
	}
	return 0;
}

标签:return,int,ne,n%,query,CF1294C,times
来源: https://www.cnblogs.com/R-V-G/p/16583222.html