http://acm.hdu.edu.cn/showproblem.php?pid=1303
因为这题的数字和数量都比较小,所以用数组进行逐个标志,先初始化为0,然后将所有输入的数作为下标,对应的数组的值赋为1,最后只需逐个查找原来的数的doubles是否为1,然后逐个相加,就可以知道答案了
View Code
1 #include<stdio.h> 2 int main() 3 { 4 int a[101],ans[201]; 5 int i,n,j,sum; 6 while(scanf("%d",&n)&&n!=-1) 7 { 8 for(j=1;j<=200;j++) 9 ans[j]=0; 10 sum=0; 11 i=1; 12 a[i]=n; 13 ans[n]=1; 14 for(i=2;;i++) 15 { 16 scanf("%d",&n); 17 if(n==0) 18 break; 19 else { 20 a[i]=n; 21 ans[n]=1; 22 } 23 } 24 for(j=1;j<i;j++) 25 sum+=ans[2*a[j]]; 26 printf("%d\n",sum); 27 } 28 return 0; 29 }