红花绿叶,花多叶少,0分求调
查看原帖
红花绿叶,花多叶少,0分求调
1390387
vector_STL_楼主2025/2/3 22:57
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
#define int long long
bool prime(int a) {
	if (a < 2) {
		return 0;
	} else if (a == 2) {
		return 1;
	} else if (a % 2 == 0) {
		return 0;
	}
	for (int i = 3; i <= sqrt(a); i++) {
		if (a % i == 0) {
			return 0;
		}
	}
	return 1;
}
vector<int> dnj(int n) {
	vector<int> f;
	if (n < 0) {
		f.push_back(-1);
		n = -n;
	}
	if (n == 0) {
		f.push_back(0);
		return f;
	}
	if (n == 1) {
		f.push_back(1);
		return f;
	}
	while (n % 2 == 0) {
		f.push_back(2);
		n /= 2;
	}
	for (int i = 3; i <= sqrt(n); i += 2) {
		while (n % i == 0) {
			f.push_back(i);
			n /= i;
		}
	}

	if (n > 2) {
		f.push_back(n);
	}

	return f;
}

signed main() {
	int n;
	cin >> n;
	int ans[n];
	int awa=0;
	while (n--) {
		int a;
		cin >> a;
		if (prime(a)) {
			ans[awa]=0;
		} else {
			int f[5];
			f[0]=0;
			f[1]=0;
			f[2]=0;
			f[3]=0;
			f[4]=0;
			int cnt = 1;
			f[0] = dnj(a)[0];
			for (int i = 1; i < dnj(a).size(); i++) {
				int c = 0;
				for (int j = 0; j < 5; j++) {
					if (dnj(a)[i] != f[j]) {
						c++;
					}
				}
				if (c == 5) {
					f[cnt] = dnj(a)[i];
					cnt++;
				}
			}
			if (cnt > 2) {
				ans[awa]=0;
			} else {
				ans[awa]=1;
			}
		}
		awa++;
	}
	for(int i=0;i<awa;i++){
		cout<<ans[i]<<endl;
	}
	return 0;
}
2025/2/3 22:57
加载中...