CF A. DZY Loves Hash
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.
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 5 0 21 53 41 53 Output 4 Input 5 5 0 1 2 3 4 Output -1//題意就是找相等的數(shù),輸出第二個(gè)的位置。可是要是最先發(fā)現(xiàn)的。
比如:10 5 1 2 2 2 1 輸出是3而不是5,由于先找到2和2相等。假設(shè)僅僅用for循環(huán),找到的是1和1相等輸出是5. 第4個(gè)例子卡了非常久。沒(méi)看懂題目。。。
。
#include <iostream> using namespace std; int main() { __int64 a[400];int n,t,i,j,p,k;while(scanf("%d%d",&p,&n)!=EOF){ memset(a,0,sizeof(a));t=0;for(i=0;i<n;i++){scanf("%I64d",&a[i]);a[i]=a[i]%p;}k=n;for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++)if(a[i]==a[j]){ k=k<(j+1)?k:(j+1);t=1;}}if(t==1)printf("%d\n",k);if(t==0)printf("-1\n");}return 0; }總結(jié)
以上是生活随笔為你收集整理的CF A. DZY Loves Hash的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 18.6 负载均衡集群介绍 18.7 L
- 下一篇: Java进阶篇(六)——Swing程序设