#include<iostream>
using namespace std;
int q[1050];
void quick_sort(int q[],int l, int r)
{
if (l >= r) return;
int i = l - 1, j = r + 1,x = q[l + r >> 1];
while (i < j)
{
do i ++ ; while (q[i] < x);
do j -- ; while (q[j] > x);
if (i < j) swap(q[i], q[j]);
}
quick_sort(q,l, j);
quick_sort(q,j + 1, r);
}
__int64 sum(int q[],int n)
{
__int64 rem=0;
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
if(q[i]*q[i]<q[j])
{
break;
}
if(q[i]*q[i]==q[j])
{
rem++;
break;
}
}
}
return rem;
}
int main()
{
int n;
while(cin>>n)
{
if(n==0) return 0;
for(int i=0;i<n;i++) cin>>q[i];
quick_sort(q,0,n-1);
__int64 count=sum(q,n);
cout<<count<<endl;
}
return 0;
}
我以为当集合中含有1的时候,应该除去1*1=1这种情况的,但是题目包含了这种情况。题目没说,就当做不考虑吧。