首页 > 其他分享 >哈希hash

哈希hash

时间:2023-09-07 19:44:50浏览次数:37  
标签:hash 哈希 int long ull 求值 Mod

将较大的内容转换成较小的值或数的算法

有两种

  • 进行特定办法求值
  • 按照权值计算

特定方法求值

比方说,将 \(x\) (\(1\) ~ \(10^{18}\)),不是用STL的情况下,判断出现几次。

可以运用hash。

int hashs(int x) { //hash是关键词
	return (x % Mod + Mod) % Mod; 
}

按照权值计算

令权值为 \(p\),给定字符串 \(s\)。

遍历每一位,转换成数值, 乘上位权,增加。

	cin >> s;
	for(int i = 0; i < s.size(); i++) {
		a[j] = a[j] * p + int(s[i]);
	}

通常使用ull

hash冲突

hash不是很稳定,有可能出现冲突,但概率很低。

#include <iostream>
#define ull unsigned long long

using namespace std;

const int p = 261, kMaxN = 10005;

ull a[kMaxN], n, cnt;

string s;

int main() {
	cin >> n;
	for (int j = 1; j <= n; j++) {
		cin >> s;
		for(int i = 0; i < s.size(); i++) {
			a[j] = a[j] * p + int(s[i]); //转换
		}
	}
	for (int i = 1; i <= n;  i++) {
		bool b = 0;
		for (int j = i + 1; j <= n;  j++) { //因为很大,开不了数组,只能O(n * n) 比较
			if (a[i] == a[j]) {
				b = 1;
				break;
			}
		}
		if (!b) {
			cnt++;
		}
	}
	cout << cnt; 
	return 0;
} 

标签:hash,哈希,int,long,ull,求值,Mod
From: https://www.cnblogs.com/jiangyuchen12/p/17685909.html

相关文章

  • 系统设计(架构师)指南5设计一致哈希(HASHING)
    5设计一致哈希(HASHING)要实现横向扩展,就必须在服务器之间高效、均匀地分配请求/数据。一致哈希是实现这一目标的常用技术。不过,首先让我们深入了解一下这个问题。5.1重散列(rehashing)问题如果有n台缓存服务器,平衡负载的常用方法是使用下面的散列方法:serverIndex=hash(key)%N......
  • 智能合约编写高级篇(二)区块哈希介绍
    本文档从区块哈希基本概念出发,详细介绍了中移链的区块哈希交易接口和应用方向。适用于EOS区块链智能合约高级开发人员,熟悉如何获取当前发生交易所在的区块号和区块哈希前缀,并通过Tapos机制验证交易的有效性。01概述(一)哈希算法哈希算法是可以将任意长度的二进制数据映射为固定长度二......
  • HashMap、LinkedHashMap和TreeMap:你真的了解它们吗?
    亲爱的小伙伴们,大家好呀!我是小米,一个热衷于技术分享的90后程序员。今天我要和大家聊聊一个在面试中经常会被问到的话题:HashMap、LinkedHashMap、TreeMap的区别。这可是一个非常重要的知识点,不仅在面试中会被频繁提及,而且在实际开发中也经常用到。让我们一起深入了解这三者的异同吧!H......
  • Rendezvous hashing算法介绍
    RendezvoushashingRendezvoushashing用于解决分布式系统中的分布式哈希问题,该问题包括三部分:Keys:数据或负载的唯一标识Values:消耗资源的数据或负载Servers:管理数据或负载的实体例如,在一个分布式系统中,key可能是一个文件名,value是文件数据,servers是连接网络的数据服务器,......
  • prosto xxhash64
     SELECT*,xxhash64(CAST(shop_nmASvarbinary)),from_big_endian_64(xxhash64(CAST(shop_nmASvarbinary)))FROMdb_ads.ads_merchandise_dim_shop ......
  • HashCat wifi密码
    WIFI密码要破解WIFI密码,首先要抓到WIFI的握手包,要想得到WIFI的握手包,就需要在监听时刚好有设备连接了该WIFI,但这就需要运气加成,因此可以我们可以主动将该WIFI的设备踢下去,一般设备就会自动连接该WIFI,此时我们就抓到握手包了。抓取WIFI握手包1、将网卡处于监听状......
  • HashCat获取 RAR、ZIP、office密码
    RAR压缩密码首先获取rar文件的hash值,我们可以使用另一款哈希破解工具John提供的rar2john工具将rar文件里的hash提取出来。rar2john下载地址:http://openwall.info/wiki/_media/john/johntheripper-v1.8.0.12-jumbo-1-bleeding-e6214ceab-2018-02-07-win-x64.7z......
  • HashCat 下载安装
    介绍Hashcat是一款用于破解密码的工具,据说是世界上最快最高级的密码破解工具,支持LM哈希、MD5、SHA等系列的密码破解,同时也支持Linux、Mac、Windows平台。一、官网https://hashcat.net二、github项目仓库https://github.com/hashcat/hashcat三、源码安装源码可以在......
  • HashMap的put方法
    HashMap结构简略图调用put()函数,如果table为空,则说明调用HashMap的无参构造函数并且第一次调用put函数,putVal内部调用resize()函数设置容量和阈值分别为16和12;(n-1)&hash进行取模计算下标,n是2的次幂,则n-1的有效位全为1,方便快速计算publicVput(Kkey,Vvalue){......
  • 文盘Rust -- 生命周期问题引发的 static hashmap 锁
    2021年上半年,撸了个rustcli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。春节后开始动手,在做的过程中会碰到各种有趣的问......