https://www.luogu.com.cn/record/169991657
#include<bits/stdc++.h>
using namespace std;
int cnt[100010],prime[10]={2,3,5,7,11,13,17,19,23,29};
int main(){
int n,a,ans=0,s=0;
scanf("%d",&n);
cnt[0]=1;
for(int i=1;i<=n;i++){
scanf("%d",&a);
int b=0;
for(int i=0;i<10;i++){
while(a%prime[i]==0){
b^=(1<<i);
a/=prime[i];
}
}
s^=b;
ans+=cnt[s];
cnt[s]++;
}
cout<<ans;
return 0;
}
加了#define int unsigned 就过了