0pts求调
查看原帖
0pts求调
1428419
mydoge0909楼主2024/12/7 09:42
#include<bits/stdc++.h>
using namespace std;
int cnt[100005]={1},pri[11]={0,2,3,5,7,11,13,17,19,23,29};
map<int,int>buc;
int main(){
	int n,ans=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		int s=0,j=1;
		while(x!=1){
			while(x%pri[j])j++;
			x/=pri[j];
			s^=(1<<j);
		}
		cnt[i]=s^cnt[i-1];
		ans+=buc[cnt[i]]++;
	}
	cout<<ans;
	return 0;
}
2024/12/7 09:42
加载中...