调了大半天了。。。
查看原帖
调了大半天了。。。
922780
zzhjidetuideng楼主2024/7/17 16:13

给我调红温了。。。

#include<bits/stdc++.h>
const int N =1e5+10;
#define int long long

using namespace std;

int a[N];
int n;
int cnt[50];
int ans;
int res;

signed main(){

    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    cnt[0] = 1;
    for(int i=1;i<=n;i++){
        int x = a[i];
        int c = res;
        int p = 2;
        while(x != 1){
            if(x % p == 0){
                x /= p;
                res ^= p;
            }else p++;
        }
        //if(a[i-1] == c && res == 0){
        //    cnt[c]++;
        //}else 
        cnt[res]++;
    }
    for(int i=0;i<=30;i++){
        //if(cnt[i] > 0)cnt[i]--;
        ans += (cnt[i] - 1)*cnt[i] / 2;
    }

    cout<<ans<<endl;

    return 0;
}

也是普通的质因数分解并异或,但是只有20分,求不对的数据

2024/7/17 16:13
加载中...