最后6个TLE,解答必关
查看原帖
最后6个TLE,解答必关
955580
LOSpace楼主2023/7/23 13:41
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 5e5 + 500;
const int MAXN = 1e8 - 1000;
int T, n, a[maxn], k, p[MAXN];
int main() {
	for (scanf("%d", &T); T--; ) {
		memset(a, 0, sizeof(a));
		memset(p, 0, sizeof(p));
		scanf("%d", &n);
		for (int i = 0; i < n; i++)
		    scanf("%d", &a[i]);
		if (n == 2) {
			printf("Yes\n");
			continue;
		}
		bool cnt = 1;
		for (int i = 0; i < n && cnt; i++)
		    for (int j = 2; a[i] != 1 && cnt; j++) {
		    	bool flag = 1;
				while (!(a[i] % j))
					if (flag && p[j]) {
						printf("No\n");
						cnt = 0;
						break;
					} else {
						p[j]++, a[i] /= j;
						flag = 0;
					}
			}
		if (cnt) printf("Yes\n");
	}
	return 0;
}
2023/7/23 13:41
加载中...