基础实验5-2.1 整型关键字的平方探测法散列 (25分)

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <malloc.h>
typedef enum {false,true
             } bool;

bool IsPrime(int n) {
    if(n==0||n==1)
        return false;
    if(n>2) {
        int i;
        for(i=2; i<=sqrt(n)+1; i++) {
            if(n%i==0)return false;
        }
    }
    return true;
}
int NextPrime(int n) {
    int i=n+1;
    while(1) {
        if(IsPrime(i))
            return i;
        i++;
    }
    return i;
}
int main() {
    int m,n;
    scanf("%d %d",&m,&n);
    if(!IsPrime(m))
        m=NextPrime(m);
    int H[m];
    memset(H,0,sizeof(H));
    int a[n];
    int i,x;
    for(i=0; i<n; i++) {
        scanf("%d",&x);
        int key=x%m;
        int d,tmp=key;
        for(d=0; d<m; d++) {
            key=tmp+d*d;
            if(!H[key%m]) {
                H[key%m]=1;
                a[i]=key%m;
                break;
            }
        }
        if(d==m)
        {
            a[i]=-1;
        }
    }
    for(i=0; i<n; i++) {
        if(i)
            printf(" ");
        if(a[i]==-1)
            printf("-");
        else
            printf("%d",a[i]);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/snzhong/p/12430927.html

时间: 2024-10-29 17:24:07

基础实验5-2.1 整型关键字的平方探测法散列 (25分)的相关文章

案例5-1.3 整型关键字的散列映射 (25分)--散列表(除留余数法+线性探测法)

解题思路: 1.初始化散列表,用于标记散列地址是否已用 2.构造结构体,(关键字去重)记录关键字的值和地址 3.读入数据,判断该关键字是否重复查询 4.用辅助数组记录每个关键字的地址,遍历输出 #include <stdio.h> #include <string.h> typedef struct { int key; int value; } Hash; int main() { int n,p; scanf("%d %d",&n,&p);

C#语言基础 Main 函数中变量 整型

在我们每次上网或者用电脑的时候,请输入你的xxx 或者你的名字(年龄/身高/学校/籍贯)是 在这里我们就要学到一些变量,就是不确定的东西 string a:   赋予变量 a ="内容": 变量赋值 合起来就是 string a ="内容";  就是赋予变量 变量赋值 string a =""; a = a+"";

[日常] Go语言圣经--作用域,基础数据类型,整型

go语言圣经-作用域 1.一个声明语句将程序中的实体和一个名字关联,比如一个函数或一个变量 2.一个变量的生命周期是指程序运行时变量存在的有效时间段;声明语句的作用域对应的是一个源代码的文本区域,它是一个编译时的属性 3.句法块是由花括弧所包含;我们可以把块(block)的概念推广到包括其他声明的群组,这些声明在代码中并未显式地使用花括号包裹起来,我们称之为词法块. 4.全局作用域 包级语法域 源文件级的作用域 局部作用域 函数级的作用域 5.从最内层的词法域向全局的作用域查找.内部的会覆盖外部

c语言基础-变量(整型)

一.整型变量 类型 关键字 取值范围 存储单元字节数(非固定) 输出 有符号整型 [signed] int -2147483648~2147483647 4 %d 无符号整型 unsigned [int] 0~4294967295 4 %u 有符号短整型 [signed] short [int] -32768~32767 2 %h 无符号短整型 unsigned short [int] 0~65535 2 %hu 有符号长整型 [signed] long long [int] -21474836

python基础一整型、bool、字符串

1整型.bool.字符串 1.整型 --数字(int) ? 用于比较运算的 ? 32位 -2 ** 31 ~ 2 ** 31 -1 ? 64位 -2 ** 63 ~ 2 ** 63 -1 ? 基础运算符:+ - * / // ** % python2 整型 int -- log(长整型) / 获取的是整数 python3 整型 int -- / 获取的是浮点数(小数) 2.进制 ? 二进制 八进制 十进制 十六进制 ? 十进制与二进制转换: ? 十进制->二进制:除二整除取倒余法 ? 二进制->

基础篇-整型转换

源码反码与补码 要理解整形转换规则,先要明白整形在计算机中存储形式. 原码 先说最简单的无符号整数. [0000 0001]原 = 1 [1000 0001]原 = 129 对有符号数来说最高位是符号位,0表示正数,1表示负数. [0000 0001]原 = 1 [1000 0001]原 = -1 所以int8的最大值表示不了129,下面都以有符号数为例. 反码 正数的反码与原码相同,负数的反码与原码的关系是:符号位不变,其他各位按位取反. 无符号位都是正数,略过不讲,这里只说有符号位数. [0

MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的差别 图 浮点型:命令

一.CMD中经常使用mysql相关命令 mysql -D, --database=name  //打开数据库 --delimiter=name  //指定分隔符 -h, --host=name  //server名称 -p,--password[=name]  //密码 -p,--port[=name] //端口号 --prompt==name  //设置提示符 -u, --user=name  //username -V, --version    //输出版本 能够组合使用,如 输入 -uu

JAVA的整型与字符串相互转换

JAVA的整型与字符串相互转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A

WLGK-51单片机接口技术基础实验 ——LED闪烁灯

WLGK-51单片机接口技术基础实验-LED闪烁灯 当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序"HelloWorld",这个实验是带领我们走入"软硬件综合使用"的一个很好入门示例,51单片机是他的一个载体.下面小伙伴们,让我们一起来揭开LED的神秘面纱吧! 万立高科官网:www.wanligaoke.com 万立高科官方商城:http://www.wlgkbj.com 万立高科淘宝直销店铺:https://r