P1079 [NOIP2012 提高组] Vigenère 密码------------------------------P1703 那个什么密码2

news2024/11/16 0:46:32

P1079 [NOIP2012 提高组] Vigenère 密码

题目描述

16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法 Vigenère 密码。Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。

在密码学中,我们称需要加密的信息为明文,用 M 表示;称加密后的信息为密文,用 C 表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为 k。在 Vigenère 密码中,密钥 k 是一个字母串,k=k1​,k2​,…,kn​。当明文 M=m1​,m2​,…,mn​ 时,得到的密文 C=c1​,c2​,…,cn​,其中ci​=mi​®ki​,运算 ® 的规则如下表所示:

Vigenère 加密在操作时需要注意:

1.® 运算忽略参与运算的字母的大小写,并保持字母在明文 M 中的大小写形式;

2.当明文 M 的长度大于密钥 k 的长度时,将密钥 k 重复使用。

输入格式

共 2 行。

第一行为一个字符串,表示密钥 k,长度不超过 100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过 1000,其中仅包含大小写字母。

输出格式

一个字符串,表示输入密钥和密文所对应的明文。

输入输出样例

输入 #1

CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm

输出 #1

Wherethereisawillthereisaway

说明/提示

对于 100% 的数据,输入的密钥的长度不超过 100,输入的密文的长度不超过 1000,且都仅包含英文字母。

代码:

#include<iostream>
using namespace std;
int main()
{
	string k,C;//k表示密钥,C表示密文
	cin>>k;
	cin>>C;
	int j=0;
	string M=C;
	for(int i=0;i<C.size();i++)
	{
		if(i%k.size()==0)
		{
			j=0;
		}
		if(k[j]>='A'&&k[j]<='Z')
		{
			k[j]=k[j]+32;
		}
		if(C[i]>='A'&&C[i]<='Z')
		{
			C[i]=C[i]+32;
		}
		if((C[i]-k[j])>=0)
		{
			C[i]=C[i]-k[j]+97;
		}
		else
		{
			C[i]=C[i]-k[j]+123;
		}
		if(M[i]>='A'&&M[i]<='Z')
		{
			C[i]=C[i]-32;
		}
		j++;
	}
	cout<<C;
	return 0;
} 

P1703 那个什么密码2

题目背景

原题为 上文----P1079 [NOIP2012 提高组] Vigenère 密码。

题目描述

与原题一模一样、具体不同请见输入格式

输入格式

第一行输入密钥

第二行输入明文

第三行输入一个正整数 M, 代表操作个数.

每个操作将 [a,b] 的字符全部倒转,比如 abc 倒转为 cba.

接下来 M 行,每行输入两个正整数 a, b。

输出格式

输出一行,输出密文。

输入输出样例

输入 #1

CompleteVictory
Wherethereisawillthereisaway
0

输出 #1

Yvqgpxaimmklongnzfwpvxmniytm

代码

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	string m,k;//m表示密文,k表示密钥
	cin>>k>>m;
	int cnt=0;
	string t=m;
	for(int i=0;i<k.length();i++){
		if(k[i]>='A'&&k[i]<='Z'){
			k[i]=k[i]+32;//将密钥中的字符换成小写,方便计算
		}
	}
	for(int i=0;i<m.length();i++){
		if(m[i]>='A'&&m[i]<='Z'){
			m[i]=m[i]+32;将密文中的字符换穿小写,方便计算
		}
		if(m[i]+k[cnt]-'a'<=122) {
			m[i]=m[i]+k[cnt]-'a';//当添加密钥后需要移动的距离小于不会超过'z'	
		}
		else{
			m[i]='a'+(m[i]+k[cnt]-'a')%122-1;当添加密钥后需要移动的距离小于会超过'z'
		}
		cnt++;
		if(cnt==k.length()){
			cnt=0;
		}
	}
	for(int i=0;i<t.length();i++){
		if(t[i]>='A'&&t[i]<='Z'){
			m[i]=m[i]-32;
		}
	}
//	cout<<m;
	int pp,a,b;
	cin>>pp;
	for(int i=1;i<=pp;i++){
		cin>>a>>b;
		string x=m.substr(a-1,b-a+1);
		reverse(x.begin(),x.end());
		m.replace(a-1,b-a+1,x);
	}cout<<m;
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3DMAX道路生成器插件RoadGenerator使用方法详解

3DMAX道路生成器插件RoadGenerator&#xff0c;一键生成全模3DMax道路插件&#xff0c;是一款便捷且极受欢迎的参数化道路建模插件。RoadGenerator插件从样条线&#xff08;道路中心线&#xff09;快速创建道路系统。包括路面、行车线、双黄线、斑马线、箭头、路牙、人行道、路…

2024年某大厂HW蓝队面试题分享

&#x1f91f; 基于入门网络安全/黑客打造的资源包无偿分享中&#xff1a; &#x1f449;黑客&网络安全入门&进阶学习资源包 应急响应流程 1&#xff09;首先判断服务器资产、影响范围以及严重程度&#xff0c;确认有没有必要将服务器下线隔离&#xff0c;然后根据服务…

YOLOv8模型实时检测RTSP协议视频流并实时发送报警信息到Java服务端实现(超详细)

前言 在训练模型完成后&#xff0c;想把模型应用起来&#xff0c;比如模型可以部署到项目中&#xff0c;实时接收RTSP视频流进行识别检测&#xff0c;一旦达到自己所设置的置信度阈值&#xff08;例如大于0.5&#xff09;&#xff0c;系统就会实时把报警信息发送给服务端&…

Linux抢占调度

目录 抢占流程 抢占时机 用户态抢占时机 1、 从系统调用返回用户空间 2、 从中断返回用户空间 内核态抢占时机 1、中断处理程序返回内核空间 可以看到最终是到了 preempt_schedule_irq 2、当内核从non-preemptible&#xff08;禁止抢占&#xff09;状态变成pr…

唤醒金融数据中台:我的数据驱动秘籍

目录 一、明析业务痛点和机会点二、数据驱动精准化营销三、一体化数据平台——整合金融数据1. 数据整合与标准化2. 数据服务与共享3.业务体系集中化 四、强化金融数据安全&#xff0c;筑牢数据保护防线 在当今数字化时代的大潮中&#xff0c;数据无疑是金融行业最耀眼的财富。作…

(娱乐)魔改浏览器-任务栏图标右上角加提示徽章

一、目标&#xff1a; windows中&#xff0c;打开chromium&#xff0c;任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角&#xff0c;加上"有1条新消息"的小提示图标&#xff0c;也叫徽章(badge)注意&#xff1a;本章节纯属娱乐&#xff0c;有需要…

道路横幅检测数据集 2000张 街道横幅 带标注 voc yolo

项目背景&#xff1a; 城市中的街道横幅通常用于广告宣传、公共通知等目的&#xff0c;但在某些情况下&#xff0c;它们也可能影响交通安全或市容市貌。因此&#xff0c;对街道横幅进行自动化检测不仅可以帮助城市管理机构及时发现并处理不当悬挂的横幅&#xff0c;还可以辅助…

12.Java基础概念-面向对象-static

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words&#xff01; 一、static关键字的含义…

葡萄叶病害检测系统源码分享

葡萄叶病害检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

无人机之飞行高度篇

无人机的飞行高度受到多种因素的制约&#xff0c;包括无人机本身的性能、无线信号的强度与稳定性&#xff0c;以及国家相关的法律法规等。具体而言&#xff0c;不同类型的无人机有不同的飞行高度限制&#xff1a; 微型无人机&#xff1a;飞行高度一般不得超过50米。这类无人机…

新生们必看!大学开学必备清单,教你快人一步适应学校生活

新生们&#xff0c;开学的脚步临近&#xff0c;你们是否已经准备好迎接全新的校园生活了呢&#xff1f;即将是一段充满挑战和机遇的旅程&#xff0c;为了让大家能够更快地适应新环境&#xff0c;我们特别整理了大学开学必备清单&#xff0c;教你快人一步适应学校生活。新生们必…

[C语言]第十节 函数栈帧的创建和销毁一基础知识到高级技巧的全景探索

10.1. 什么是函数栈帧 我们在写 C 语言代码的时候&#xff0c;经常会把一个独立的功能抽象为函数&#xff0c;所以 C 程序是以函数为基本单位的。 那函数是如何调用的&#xff1f;函数的返回值又是如何待会的&#xff1f;函数参数是如何传递的&#xff1f;这些问题都和函数栈帧…

Flask-JWT-Extended登录验证

1. 介绍 """安装:pip install Flask-JWT-Extended创建对象 初始化与app绑定jwt JWTManager(app) # 初始化JWTManager设置 Cookie 的选项:除了设置 cookie 的名称和值之外&#xff0c;你还可以指定其他的选项&#xff0c;例如&#xff1a;过期时间 (max_age)&…

VulhubSkyTower靶机详解

项目地址 https://download.vulnhub.com/skytower/SkyTower.zip项目配置 我们下载一个VirtualBox&#xff0c;这是官网 Downloads – Oracle VirtualBox 安装到默认路径就行 打开后点击注册 选择解压后的vbox文件 然后点击左上角管理 点击导出虚拟电脑&#xff0c;选中后…

Vue(12)——路由的基本使用

VueRouter 作用&#xff1a;修改地址栏路径时&#xff0c;切换显示匹配的组件 基本步骤&#xff08;固定&#xff09; 下载&#xff1a;下载VueRouter模块到当前工程引入安装注册创建路由对象注入&#xff0c;将路由对象注入到new Vue 实例中&#xff0c;建立关联 发现了#/表…

移动端如何实现智能语音交互

智能语音交互&#xff08;Intelligent Speech Interaction&#xff09;是基于语音识别、语音合成、自然语言理解等技术&#xff0c;为企业在多种实际应用场景下&#xff0c;赋予产品“能听、会说、懂你”式的智能人机交互功能。适用于智能问答、智能质检、法庭庭审实时记录、实…

CICD 持续集成与持续交付

目录 一 CICD是什么 1.1 持续集成&#xff08;Continuous Integration&#xff09; 1.2 持续部署&#xff08;Continuous Deployment&#xff09; 1.3 持续交付&#xff08;Continuous Delivery&#xff09; 二 git工具使用 2.1 git简介 2.2 git 工作流程 三 部署git …

IntelliJ IDEA 2024.1 新特性下载安装激活方法

概述 IntelliJ IDEA 2024.1 发布了一系列令人期待新特性&#xff0c;可以帮助您提高开发效率。比如&#xff1a;全行代码补全、SpringBean 补全和自动装配、多语句内联端点、新版终端、编辑器中粘性行、AI Assistant 编码助手、改进的日志工作流、重命名嵌入提示、为整行代码提…

【北京迅为】《STM32MP157开发板使用手册》- 第三十三章Cortex-M4 DMA实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

《锐捷AP 胖模式配置示例》

目录 WEB配置方式: 1. 登录 AP 管理界面 2. 配置无线服务 3. 配置射频参数 4. 配置 VLAN (如果需要) 5. 配置 IP 地址 6. 其他高级设置(根据需求) 命令行配置: 1. 进入特权模式 2. 进入全局配置模式 3. 配置管理 IP 地址 4. 创建无线 SSID 5. 配置 SSID 加密…