Description
描述
给你一个整数集合A(无重复元素),如果x,y都属于A,且y=xx,那么组成一个数对,请找出这个集合中满足条件的数对的个数。比如说集合A={2,3,4},则只有4=22,则答案为1。
输入
每个样例占2行,第一行为一个非负整数n,n<=1000,为集合中元素的个数,如果n为0则输入结束。第二行为n个整数,为集合的元素,所有的元素为非负整数,且<=100,000,000,两个整数之间有一个空格隔开。
输出
每行输出一个样例的结果。
Sample Input
3
2 3 4
5
3 36 5 9 6
0
Sample Output
1
2
Source
ericxie
#include <stdio.h>
int main()
{
int n;//n为元素个数
__int64 b,c;//b,c数值很大
while(scanf("%d",&n)!=EOF&&n!=0)//n为0时,循环结束
{
int a[1005],i,j;//定义数组a
for(i=0;i<n;i++)//遍历输入
{
scanf("%d",&a[i]);
}
int count=0;//计数器
for(i=0;i<n;i++)//两个for循环
{
b=a[i];
for(j=0;j<n;j++)
{
c=a[j];
if(c==b*b)//如果符合条件,count增加1
{
count++;
}
}
}
printf("%d\n",count); //输出
}
return 0;
}
写于2021年8月17日11:34分。
重在独自思考,多敲。