zoukankan      html  css  js  c++  java
  • Codeforces Round #FF (Div. 2) 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.

    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
    ");
            else printf("%d
    ",bj);
        }
        return 0;
    }
    
    
    


  • 相关阅读:
    【自动化测试不求人】selenium三种等待时间
    Linux中vim的简单配置
    linux中解压缩并安装.tar.gz后缀的文件
    Linux命令全称
    Linux中的find(-atime、-ctime、-mtime)指令分析
    (转)docker安装Mysql8.0并挂载外部配置和数据
    自动化测试常见Python算法题&答案
    2019年的面试经验总结-软件测试
    Python基础语法
    抓包工具Charles的使用说明
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7234827.html
Copyright © 2011-2022 走看看