RE 求助
查看原帖
RE 求助
533372
Benny_Li楼主2025/6/26 20:57

报错信息:Runtime Error. Received signal 8: Floating-point exception.

#include <cstdio>

constexpr int MAXN = 1e5 + 5;
constexpr int MAXA = 35;

int n, a, ans;
unsigned long long sub[MAXN];
constexpr int m = 11, prime[m] = {4, 9, 25, 49, 121, 169, 289, 361, 529, 841, 961};

int simplified(int x) {
	for (int i = 0; prime[i] <= x && i < m; ++i) {
		while (!(x % prime[i])) {
			x /= prime[i];
		}
	}
	return x;
}

int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; ++i) {
		scanf("%d", &a);
		a = simplified(a);

		if (i) {
			sub[i] = sub[i - 1] * a;
		} else {
			sub[0] = a;
		}
	}

	sub[n] = sub[n - 1] * sub[n - 1];

	for (int i = 0; i < n; ++i) {
		for (int j = i; j < n; ++j) {
			if (simplified(sub[j + 1] / sub[i]) == 1) {
				++ans;
			}
		}
	}

	printf("%d", ans);
	return 0;
}
2025/6/26 20:57
加载中...