当前位置: 首页 > news >正文

打卡信奥刷题(3064)用C++实现信奥题 P6871 [COCI 2013/2014 #6] HASH

P6871 [COCI 2013/2014 #6] HASH

题目背景

Mirko 正在研究一个哈希函数。

题目描述

此哈希函数如此定义:

  • f ( N U L L ) = 0 f(\rm{NULL})=0f(NULL)=0
  • f ( a i + s i ) = ( ( f ( s i ) × 33 ) xor ⁡ ord ⁡ ( a i ) ) m o d M O D f(a_i+s_i)=((f(s_i)\times33)\operatorname{xor}\ \operatorname{ord}(a_i))\bmod MODf(ai+si)=((f(si)×33)xorord(ai))modMOD

其中a i a_iai代表一个字符,s i s_isi代表一个字符串,均由小写字母组成。

  • xor ⁡ \operatorname{xor}xor代表按位异或算符。
  • ord(letter) ⁡ \operatorname{ord(letter)}ord(letter)代表字母中字母的序数(如:ord(a)=1 ⁡ \operatorname{ord(a)=1}ord(a)=1ord(z)=26 ⁡ \operatorname{ord(z)= 26}ord(z)=26)。

M O D MODMOD2 m 2^m2m形式的整数。

m = 10 m=10m=10时,哈希函数的一些值如下:

  • f ( a ) = 1 f(\texttt{a})=1f(a)=1
  • f ( aa ) = 32 f(\texttt{aa})=32f(aa)=32
  • f ( kit ) = 438 f(\texttt{kit})=438f(kit)=438

请问有多少个单词的哈希值为k kk且长度为n nn

输入格式

输入一行,包含三个整数n nnk kkm mm

输出格式

输出一行,哈希值为k kk且长度为n nn的单词个数。

输入输出样例 #1

输入 #1

1 0 10

输出 #1

0

输入输出样例 #2

输入 #2

1 2 10

输出 #2

1

输入输出样例 #3

输入 #3

3 16 10

输出 #3

4

说明/提示

【样例解释】
样例 1 解释

字母表中的所有字符的ord \text{ord}ord值均不为0 00

样例 2 解释

单词b

样例 3 解释

词语为dxlhphlxdxpx

【数据规模与约定】

1 ≤ n ≤ 10 1\le n\le 101n100 ≤ k < 2 m 0\le k<2^m0k<2m6 ≤ m ≤ 25 6\le m\le 256m25

【说明】

题目译自 COCI2013-2014 CONTEST #6T5 HASH

C++实现

#include<bits/stdc++.h>usingnamespacestd;intn,K,m,inv,cnt[1<<25];longlongans;voiddfs1(intdep,intv){if(!dep){++cnt[v];return;}for(inti=1;i<=26;++i)dfs1(dep-1,((v*33)^i)%m);}voiddfs2(intdep,intv){if(!dep){ans+=cnt[v];return;}for(inti=1;i<=26;++i)dfs2(dep-1,1ll*(v^i)*inv%m);}intmain(){scanf("%d%d%d",&n,&K,&m);m=1<<m;for(inti=1;i<m;++i)if(i*33%m==1)inv=i;dfs1(n/2,0);dfs2((n+1)/2,K);printf("%lld",ans);}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.cnnetsun.cn/news/1703968.html

相关文章:

  • Poppins字体革新:跨语言排版的高效解决方案
  • 高德自定义地图图层实战:从零搭建个性化地图服务
  • 效率提升实践:用快马生成可集成流水线的openclaw标准化卸载模块
  • Python flask django的医院运营管理系统 医院设备报修系统2gh6145e
  • 如何用Alternative Mod Launcher快速解决XCOM 2模组管理混乱问题
  • MusePublic批处理教程:100张不同风格人像自动化生成脚本
  • 从零到一:用Clawdbot搭建基于Qwen3-32B的智能对话系统
  • CUDA并行优化实战:从TopK问题剖析共享内存与规约算法设计
  • 3步快速找回加密压缩包密码:终极免费工具使用指南
  • vLLM-v0.17.1实战教程:WebShell中用vLLM CLI进行模型冷热启动测试
  • 微信聊天记录数据管理:WeChatMsg开源工具的完整应用指南
  • OpenClaw排错指南:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF接口连接失败解决方案
  • 如何用LRCGet三步搞定离线音乐库的歌词同步难题
  • GLM-4-9B-Chat-1M效果展示:1M上下文下跨200页PDF的全局信息关联与推理
  • 终极指南:如何使用Legacy-iOS-Kit让老旧iOS设备重获新生
  • 别再手动算offsetTop了!uni-app中实现吸顶菜单联动效果的完整避坑指南
  • YimMenu:GTA V安全增强工具全维度应用指南
  • 手机上的AI革命:从Gemini Nano到Octopus,盘点那些能塞进你口袋的端侧大模型
  • 手把手教你用Python模拟勒索病毒代码(仅供安全研究,附完整代码与注释)
  • 使用KART-RERANK优化C语言技术文档的检索系统
  • 腾讯优图Youtu-VL-4B镜像部署实战:从环境配置到图片理解,完整流程解析
  • 如何快速掌握MapleStory WZ文件编辑:终极游戏资源编辑器使用指南
  • OpenClaw权限管理:安全使用千问3.5-35B-A3B-FP8的实践指南
  • 3步攻克NCM加密:ncmdumpGUI让音乐文件重获自由
  • D3KeyHelper革新指南:从重复劳动到智能高效的暗黑破坏神3按键解决方案
  • Ubuntu 24.04 Live Server安装后必做:5分钟搞定SSH远程登录配置
  • 三大运营商骨干网技术对比:从架构设计到实际性能优化
  • 深入解析 React Hook Form 的表单验证问题
  • Video-subtitle-remover:AI驱动的硬字幕去除工具如何解决视频处理难题
  • 3步终极方案:让Amlogic电视盒子完美运行Armbian系统