1. 程式人生 > >C/C++ 演算法分析與設計:列舉(二倍的問題)

C/C++ 演算法分析與設計:列舉(二倍的問題)

題目描述

給定2到15個不同的正整數,你的任務是計算這些數裡面有多少個數對滿足:數對中一個數是另一個數的兩倍。比如給定1 4 3 2 9 7 18 22,得到的答案是3,因為2是1的兩倍,4是2個兩倍,18是9的兩倍。

輸入

輸入包括n組測試資料。每組資料包括一行,給出2到15個兩兩不同且小於100的正整數。每一行最後一個數是0,表示這一行的結束後,這個數不屬於那2到15個給定的正整數。

輸出

對每組輸入資料,輸出一行,給出有多少個數對滿足其中一個數是另一個數的兩倍。

樣例輸入

2
2 4 8 10 0
7 5 11 13 1 3 0

樣例輸出

2
0
#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		int x,i=0,j,k,a[15],*p,t=0;
		while(scanf("%d",&x)!=EOF)
		{
			if(x==0) break;
			a[i++]=x;
		}
		for(j=0;j<=i;j++)
		{
			p=&a[j];
			for(k=0;k<=i;k++)
				if((*p)*2==a[k])
				  t++;
		}
		printf("%d\n",t);
	}
}