思路:用筛法给素数打表,二次探测法(只需要增加的)–如果的位置被占,那么就依次探测。

注意:如果输入的,这也不是素数;如果,你需要打表的范围就更大了,因为不是素数。


AC代码

#include <stdio.h>
#include <math.h>
#include <string.h>
const int maxn = 10000+20;
int vis[maxn], pos[maxn];

void getPrim(int n) {
    int m = sqrt(n+0.5);
    memset(vis, 0, sizeof(vis));
    vis[0] = vis[1] = 1;
    for(int i = 2; i <= m; i++) if(!vis[i])
        for(int j = i*i; j <= n; j += i) vis[j] = 1;
}

int main() {
    getPrim(maxn);
    int n, m;
    scanf("%d%d", &n, &m);
    if(vis[n]) {
        for(int i = n+1; i <= maxn; i++) {
            if(!vis[i]) {
                n = i;
                break;
            }
        }
    }
    //printf("%d\n", n);
    memset(pos, 0, sizeof(pos));
    int key;
    for(int i = 0; i < m; i++) {
        scanf("%d", &key);
        int ok = 0;
        for(int j = 0; j < n; j++) {
            int hkey = (key+j*j) % n;
            if(!pos[hkey]) {
                ok = 1;
                pos[hkey] = 1;
                printf("%d%c", hkey, i == m-1 ? '\n' : ' ');
                break;
            }
        }
        if(!ok) printf("-%c", i == m-1 ? '\n' : ' ');
    }
    return 0;
}

如有不当之处欢迎指出!

PAT1078 Hashing 坑爹的更多相关文章

  1. PAT1078 Hashing

    11-散列2 Hashing   (25分) The task of this problem is simple: insert a sequence of distinct positive in ...

  2. pat1078. Hashing (25)

    1078. Hashing (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task of t ...

  3. PAT-1078 Hashing (散列表 二次探测法)

    1078. Hashing The task of this problem is simple: insert a sequence of distinct positive integers in ...

  4. _00013 一致性哈希算法 Consistent Hashing 新的讨论,并出现相应的解决

    笔者博文:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前.妳却感觉不到我的存在 技术方向: ...

  5. [Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)

    局部敏感哈希(Locality Sensitive Hashing,LSH)算法是我在前一段时间找工作时接触到的一种衡量文本相似度的算法.局部敏感哈希是近似最近邻搜索算法中最流行的一种,它有坚实的理论 ...

  6. Elasticsearch 的坑爹事——记录一次mapping field修改过程

    Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的_mapp ...

  7. [iOS]坑爹的ALAsset(Assets Library Framework)

    Assets Library Framework 可以用来做iOS上的多选器,选照片视频啥的啦就不介绍了. 目前的项目有点类似dropbox,可以选择设备内的照片然后帮你上传文件,使用了Assets ...

  8. .net core 一次坑爹的类库打包过程

    众所周知,.net core 跨平台类库引用一定要通过nuget获得.(如有问题,欢迎指出) 打包 将普通.net project转换成.net core 的类库有两种方式: 1.新建.net cor ...

  9. 首师大附中互测题:50136142WXY的坑爹百度地图【B006】(可以喝的超大桶水)

    [B006]50136142WXY的坑爹百度地图[难度B]——————————————————————————————————————————————————————————————————————— ...

随机推荐

  1. CentOS6.x机器安装Azure CLI2.0【2】

    安装Azure CLI 2.0的前提是:机器中必须有 Python 2.7.x 或 Python 3.x.如果机器中没有其中任何一个Python版本,请及时安装 1.准备一台CentOS 6.9的机器 ...

  2. Python--socketserve源码分析(一)

    class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass 实现原理: s =socketserver.ThreadingTCPServer(参 ...

  3. Linux指令--chown

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  4. ClearCase config_spec

    1.使用分支前要在vob创建branch  type,Config_Spec不能自动创建branch type: 2.如果可能,最好在以前确定的label上进行新的工作,避免维护复杂的config_s ...

  5. java 表现层:jsp、freemarker、velocity

    在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术 优点: 1.功能强大,可以写java代码 2.支持jsp标签(jsp tag) 3.支 ...

  6. centos下在php.ini设置时区

    错误: PHP Warning: Unknown: It is not safe to rely on the system's timezone settings. You are *require ...

  7. 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)

    前面的话 学习linux 的同人,都知道linux shell文本处理能力非常强大.有一组强大的文本处理工具:grep,sed,awk . 其中grep 经常用作查找匹配文本.sed用作文本编辑替换. ...

  8. Hyperledger Fabric Endorsement policies——背书策略

    背书策略 背书策略用于指导peer如何确定交易是否得到了的认可.当一个peer接收到一个事务时,它会调用与事务的Chaincode相关联的VSCC(验证系统链代码),作为事务验证流程的一部分,以确定交 ...

  9. htmlcss渐变及兼容性

    自我总结,欢饮拍砖. <!DOCTYPE HTML> <html lang="en"> <head>      <meta content ...

  10. 关于scanf,gets

    1.用了gets后,假如你没有输入任何东西直接[enter],它将执行下一条命令 2.用了scanf后,直接按了[enter],它将换行并等待你的输入,直到你输入非[enter],再执行下一条命令. ...