TLE 40pts求助
查看原帖
TLE 40pts求助
779036
封禁用户楼主2024/9/6 22:29
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int arr[MAXN];
bool AcCode(const unordered_map<int, int>& ans) {
    for (auto f : ans) {
        if (f.second % 2 != 0) {
            return false;
        }
    }
    return true;
}
unordered_map<int, int> ACCODE(int num) {
    unordered_map<int, int> ans;
    for (int i = 2; i * i <= num; ++i) {
        while (num % i == 0) {
            ans[i]++;
            num /= i;
        }
    }
    if (num > 1) ans[num]++;
    return ans;
}
int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }
    int c = 0;
    for (int l = 0; l < n; ++l) {
        unordered_map<int, int> ans;
        for (int r = l; r < n; ++r) {
            unordered_map<int, int> CF = ACCODE(arr[r]);
            for (auto f : CF) {
                ans[f.first] += f.second;
            }
            if (AcCode(ans)) {
                c++;
            }
        }
    }
    cout << c << endl;
    return 0;
}
2024/9/6 22:29
加载中...