#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <list>
#include <deque>
#include <bitset>
using namespace std;
typedef long long LL;
const int maxn = 511;
bitset<maxn+10>vis;
int p[maxn],size;
void init()
{
int i,j;
for(i=2;i*i<=maxn;++i)
if(!vis[i])
for(j=i*i;j<=maxn;vis[j]=true,j+=i);
for(i=2;i<maxn;++i)
if(!vis[i])
p[size++]=i;
// cout<<size<<endl;
}
bool a[111][111];
void spilt(LL n,bool a[])
{
int i;
for(i=0;i<size;++i)
{
while(n%p[i]==0)
{
a[i]^=true;
n/=p[i];
}
}
}
LL Det(int n)
{
int i,j,k,t;
int cnt=0;
for(i=0;i<n;++i)
{
for(j=0;j<size&&!a[i][j];++j);
if(j>=size)
{
++cnt;
continue;
}
for(t=i+1;t<n;++t)
{
if(a[t][j])
{
for(k=0;k<size;++k)
{
a[t][k]^=a[i][k];
}
}
}
}
return (1ll<<cnt)-1;
}
int main()
{
init();
ios::sync_with_stdio(false);
int T,n,i;
LL k;
cin>>T;
while(T--)
{
memset(a,false,sizeof(a));
cin>>n;
for(i=0;i<n;++i)
{
cin>>k;
spilt(k,a[i]);
}
cout<<Det(n)<<endl;
}
return 0;
}
UVA 11542 - Square
最新推荐文章于 2021-03-14 15:45:30 发布