UVa 641 Do the Untwist
📅 2026/7/10 23:05:14
👁️ 次浏览
题目描述密码学涉及秘密通信的方法将明文转换为密文以便只有预期接收者能够解读。本题实现一种称为“扭曲”twisting \texttt{twisting}twisting的简单加密方法。加密时发送方和接收方约定一个正整数密钥k kk。明文和密文是字符数组分别对应整数数组plaincode \texttt{plaincode}plaincode和ciphercode \texttt{ciphercode}ciphercode。数组长度为n nn消息长度下标从0 00开始。字符映射规则为_下划线表示空格对应0 00a到z对应1 11到26 2626.对应27 2727。加密过程如下将明文 plaintext 的每个字符按映射规则转换为整数存入 plaincode。对每个i ii0 ≤ i n 0 \le i n0≤in计算 ciphercode 的第i ii个元素ciphercode [ i ] ( plaincode [ ( k ⋅ i ) m o d n ] − i ) m o d 28 , \textit{ciphercode}[i] (\textit{plaincode}[(k \cdot i) \bmod n] - i) \bmod 28,ciphercode[i](plaincode[(k⋅i)modn]−i)mod28,其中m o d \bmodmod表示非负余数。将ciphercode \texttt{ciphercode}ciphercode中的每个整数再映射回字符得到密文ciphertext \texttt{ciphertext}ciphertext。给定密钥k kk和密文要求还原明文解密。题目保证解唯一且gcd ( k , n ) 1 \gcd(k, n) 1gcd(k,n)1。输入格式输入包含一个或多个测试用例每行包含一个整数k kk1 ≤ k ≤ 300 1 \le k \le 3001≤k≤300一个空格然后是一个长度至少为1 11、至多为70 7070的密文字符串。输入以单独一行0结束。输出格式对于每个测试用例输出一行解密后的明文字符串。样例输入5 cs. 101 thqqxw.lui.qswer 3 b_ylxmhzjsys.virpbkr 0输出cat this_is_a_secret beware._dogs_barking题目分析加密的核心是置换与移位。给定密文ciphertext已知每个字符的编码ciphercode[i]以及密钥k kk和长度n nn需要恢复plaincode[j]。由加密公式ciphercode [ i ] ( plaincode [ ( k ⋅ i ) m o d n ] − i ) m o d 28 \textit{ciphercode}[i] (\textit{plaincode}[(k \cdot i) \bmod n] - i) \bmod 28ciphercode[i](plaincode[(k⋅i)modn]−i)mod28设j ( k ⋅ i ) m o d n j (k \cdot i) \bmod nj(k⋅i)modn则上式可改写为plaincode [ j ] ( ciphercode [ i ] i ) m o d 28 \textit{plaincode}[j] (\textit{ciphercode}[i] i) \bmod 28plaincode[j](ciphercode[i]i)mod28因为k kk与n nn互质映射i ↦ ( k ⋅ i ) m o d n i \mapsto (k \cdot i) \bmod ni↦(k⋅i)modn是一个一一对应所以对于每个i ii我们可以得到唯一的j jj并计算出对应的plaincode[j]。最后将plaincode中的整数按字符映射表还原为字符即可得到明文。解题思路建立字符映射表使用数组或map将字符_、a–z、.映射到0 00–27 2727同时建立反向映射表用于将整数还原为字符。对每个测试用例读取密钥k kk和密文字符串令n nn为密文长度。初始化一个长度为n nn的plaintext字符数组。遍历i ii从0 00到n − 1 n-1n−1计算ciphercode[i]即密文第i ii个字符对应的整数。计算j (k * i) % n。计算plaincode[j] (ciphercode[i] i) % 28。将plaincode[j]映射回字符存入plaintext[j]。输出plaintext。由于gcd ( k , n ) 1 \gcd(k, n) 1gcd(k,n)1上述赋值不会冲突。复杂度分析每个测试用例处理长度为n nn每次操作O ( 1 ) O(1)O(1)总时间复杂度O ( n ) O(n)O(n)。空间复杂度O ( n ) O(n)O(n)。代码实现// Do the Untwist// UVa ID: 641// Verdict: Accepted// Submission Date: 2016-08-29// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intk;string ciphertext;string letters_abcdefghijklmnopqrstuvwxyz.;mapchar,intcode;for(inti0;iletters.length();i)code[letters[i]]i;while(cink,k){cinciphertext;intnciphertext.length();stringplaintext(n,0);for(inti0;iciphertext.length();i){intmcode[ciphertext[i]];for(intj0;j27;j)if((j-i84)%28m){plaintext[(k*i)%n]letters[j];break;}}coutplaintext\n;}return0;}总结本题通过分析加密公式推导出解密公式利用模运算和映射的置换性质快速还原明文。关键在于理解加密过程的数学本质并注意取模运算的非负性。由于密钥与长度互质保证了每个位置都能唯一确定。该解法简洁高效适用于长度较小的字符串。
概述
2026年,大模型竞赛的叙事逻辑正在发生深刻转变。随着基础模型架构趋于收敛、开源生态下载量突破百亿级,行业逐渐告别了单纯追求参数规模的“军备竞赛”。一个更为务实且残酷的现实浮出水面:当底座厂商格局逐步稳定,决定模型…
📅 2026/7/10 23:05:14
011:输入与交互方式
上一讲我们把"对话"建好、管好,相当于备好了工作台、归置好了资料。这一篇就讲怎么把信息喂给 AI——输入质量直接决定输出质量,会"喂料"的人,得到的答案往往更准、更可用。WorkBuddy 的输入远不止打字,文本、附件、@提及、语音、…
📅 2026/7/10 23:05:14
链上 AI Agent 的运行时护栏设计:操作限额、速率限制与异常熔断策略
一、AI Agent 自治性带来的安全挑战
链上 AI Agent 是一种在智能合约框架内运行、具备自主决策和执行能力的新型链上程序。与传统的"被动合约"(只在用户发起交易时执行&…
📅 2026/7/10 23:05:14
GetQzonehistory终极指南:完整备份QQ空间历史说说的免费工具 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
你是否曾经想要找回那些年QQ空间里发布的心情说说、珍贵回忆&am…
📅 2026/7/11 0:16:36
苏州大学研究生毕业论文LaTeX模板:云端写作的完美解决方案 【免费下载链接】Soochow-University-Thesis-Overleaf-LaTeX-Template 苏州大学研究生毕业论文Latex模板 - Overleaf 项目地址: https://gitcode.com/gh_mirrors/so/Soochow-University-Thesis-Overleaf-…
📅 2026/7/11 0:15:36
终极PDF解密神器:3分钟永久解除科学文库7天限制的完整指南 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档,支持破解科学文库、标准全文数据库下载的文档。无损破解,保留文字和目录,解除有效期限制。 项目地址…
📅 2026/7/11 0:14:36
Visual C运行库终极解决方案:VisualCppRedist AIO深度技术解析 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist
VisualCppRedist AIO是一个专业的Micr…
📅 2026/7/11 0:14:36
如何快速安装Blue Topaz主题:打造专属笔记环境的完整指南 【免费下载链接】Blue-Topaz_Obsidian-css A blue theme for Obsidian. 项目地址: https://gitcode.com/gh_mirrors/bl/Blue-Topaz_Obsidian-css
你是否厌倦了Obsidian默认的单调界面?每…
📅 2026/7/11 0:13:36
Go 数据库迁移工具链:从手写 SQL 到自动化版本管理的演进实践
一、手写 SQL 迁移的熵增:当 add_column_migration_v3_final_final2.sql 成为常规命名
数据库 Schema 变更是应用演进中最危险的操作。手写 SQL 的方式来管理这些变更,经过一段…
📅 2026/7/11 0:13:36
摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计…
📅 2026/7/11 0:00:31
1. 命令简介gpm 是 Linux 系统下运行于虚拟控制台(文字终端模式)的鼠标服务器。它的主要功能是在没有图形界面的纯文本环境中,为虚拟控制台提供鼠标支持,允许用户使用鼠标进行文本的选择、复制和粘贴操作,极大地提升了…
📅 2026/7/11 0:00:31
导语
先澄清一个常被混用的概念:BI试点"上线",并不等于试点"验收通过"。很多企业把仪表板做出来、账号发下去、培训开完场,就默认试点已经跑通,随后进入推广阶段——结果推广到第二个部门、第三个业务线时&am…
📅 2026/7/11 0:00:31
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/10 22:46:54
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/10 22:46:54
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/10 22:46:54
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/10 22:46:54
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/10 22:46:54
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/10 22:46:54