1. 程式人生 > >Codeforces Round #FF (Div. 2) A. DZY Loves Hash

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

turn esp while integer each lov article opera title

DZY 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.

Input

The 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).

Output

Output a single integer — the answer to the problem.

Sample test(s) Input
10 5
0
21
53
41
53
Output
4
Input
5 5
0
1
2
3
4
Output
-1


註意數據範圍p,m<=200。盡管輸入的數據較大,剛開始自己mod1000000001,發現這不能有沖突了,而且還要標記下第一個發生沖突,以後的沖突能夠忽略


#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
#define LL int
#define inf 0x3f3f3f3f
using namespace std;
int ha[10002];
int bj;
int main()
{
    LL n,m,i,j,k,l;
    while(~scanf("%d%d",&n,&m))
    {
        bj=0;
        memset(ha,0,sizeof(ha) );
        for(i=1;i<=m;i++)
        {
            scanf("%d",&k);
            k=k%n;//對當前的輸入值的個數進行%
            if(!ha[k])
            {
                ha[k]++;
            }
            else if(ha[k]!=0&&!bj  )//僅僅取。符合條件的第一個<span id="transmark"></span>
            {
                bj=i;
            }
        }
        if(!bj)
        printf("-1\n");
        else printf("%d\n",bj);
    }
    return 0;
}




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