您的位置:首页 > 其它

Codeforces Round #FF (Div. 2) A. DZY Loves Hash

2014-07-14 08:20 381 查看
A. DZY Loves Hashtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputDZY has a hash table with p buckets, numbered from 0 to p - 1. He wants to insert n numbers, in the order they are given, into the hash table. For the i-th number xi, DZY will put it into the bucket numbered h(xi), where h(x) is the hash function. In this problem we will assume, that h(x) = x mod p. Operation a mod b denotes taking a remainder after division a by b.However, each bucket can contain no more than one element. If DZY wants to insert an number into a bucket which is already filled, we say a "conflict" happens. Suppose the first conflict happens right after the i-th insertion, you should output i. If no conflict happens, just output -1.InputThe first line contains two integers, p and n (2 ≤ p, n ≤ 300). Then n lines follow. The i-th of them contains an integer xi (0 ≤ xi ≤ 109).OutputOutput a single integer — the answer to the problem.Sample test(s)input
10 5021534153
output
4
input
5 501234
output
-1
题意:就是要你找出取模之后,找出相等的那一个下标
#include<string.h>#include<stdio.h>int main(){   int  out=0;__int64   p,n,i,j;__int64   a[1001];__int64  mod[1001];while(scanf("%I64d %I64d",&p,&n)!=EOF){	memset(a,0,sizeof(a));	memset(mod,0,sizeof(mod));	out=0;	for(i=1;i<=n;i++)	{		scanf("%I64d",&a[i]);		mod[i]=a[i]%p;			}/*		for(i=1;i<=n;i++)	{		printf("%d ",mod[i]);			}		printf("\n");		*/	for(i=2;i<=n&&out!=1;i++)	{		for(j=1;j<=i-1&&out!=1;j++)		{			//printf("%I64d-%I64d    ",i,j);			if(mod[i]==mod[j])			{								printf("%I64d\n",i);				out=1;			}		}	//	printf("\n");	}	if(!out){		printf("-1\n");	}}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: