1784数字を探す

1251 ワード

数字をさがす


時間制限:
1000 ms|メモリ制限:
65535 KB
説明
1~100000個の数字のうち、特定の数字が何個あるかを素早く見つけることができますか?
入力
デジタルT(1<=T<=10)は、Tグループデータがあることを示す
各グループのデータに対して、数字Nで始まり、2<=N<=10000000個の数字を表す
次はN個の数字、a 1、a 2、a 3...aN
各aの値(1<=a<=217483647)
次は数字Sで、S回を検索する必要があることを示す(1<=S<=1000)
最後にS個の数字K、つまり探すべき数字です
しゅつりょく
各セットの数字に対して、数字Kの個数を出力し、Kの存在を保証する
サンプル入力
1
5
1 2 2 3 4
2
2
3
サンプル出力
2
1
この問題は簡単なhashで、大きな配列を開くだけでいいですが、配列範囲は2147483647ではなく100000であることに注意してください.しかし、私はこの問題のテスト結果が厳密ではないと感じて、hashのハッシュは明らかに衝突する可能性があって、この問題の中で意外にも考慮しなくて、直接1回ハッシュすればいいです
#include <stdio.h>
#include <stdlib.h>
#include <string.h> 


int main()
{
	int a[100002];
	int number,t;
	int n;
	int i;
	long temp;
	long temp1;
	int op;


	scanf("%d",&number);

	
	for(t=0;t<number;t++)
	{
		memset(a,0,sizeof(a));

		scanf("%d",&n);

		for(i=0;i<n;i++)
		{
			scanf("%ld",&temp);

			temp1=temp%100002;


			a[temp1]++;
		}

		scanf("%d",&op);


		for(i=0;i<op;i++)
		{
			scanf("%ld",&temp1);

			printf("%d
",a[temp1]); } } return 0; }