C/C++アルゴリズムの分析と設計:列挙(二倍の問題)

819 ワード

タイトルの説明
2から15の異なる正の整数を与えて、あなたの任務はこれらの数の中にどれだけの数対が満たされているかを計算することです:数対の中の1つの数は別の数の2倍です.例えば、1 4 3 2 9 7 18 22が与えられ、2は1の2倍、4は2の2倍、18は9の2倍であるため、3が得られる.
入力
    n     。        ,  2 15        100    。         0,         ,       2 15       。

しゅつりょく
       ,    ,                       。

サンプル入力
2
2 4 8 10 0
7 5 11 13 1 3 0

サンプル出力
2
0
#include
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
",t); } }