[字符串][NOIP2012]Vigenère密码
Vigenère密码
题目描述
16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。 在Vigenère密码中,密钥k是一个字母串,k=k1k2…kn。当明文M=m1m2…mn时,得到的密文C=c1c2…cn,其中ci=mi®ki,运算®的规则如下表所示:
Vigenère 加密在操作时需要注意:
1. ®运算忽略参与运算的字母的大小写,并保持字母在明文M 中的大小写形式;
2. 当明文M 的长度大于密钥k 的长度时,将密钥k 重复使用。
例如,明文M=Helloworld,密钥k=abc 时,密文C=Hfnlpyosnd。
|
明文
|
H
|
e
|
l
|
l
|
o
|
w
|
o
|
r
|
l
|
d
|
|
密钥
|
a
|
b
|
c
|
a
|
b
|
c
|
a
|
b
|
c
|
a
|
|
密文
|
H
|
f
|
n
|
l
|
p
|
y
|
o
|
s
|
n
|
d
|
输入
输入文件名为vigenere.in。
输入共2 行。
第一行为一个字符串,表示密钥k ,长度不超过100,其中仅包含大小写字母。第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。
输出
输出文件名为vigenere.out。
输出共1 行,一个字符串,表示输入密钥和密文所对应的明文。
样例输入
CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm
样例输出
Wherethereisawillthereisaway
提示
对于 100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且
都仅包含英文字母。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int Maxv = ; int main(){ char wd1[Maxv], wd2[Maxv] ;
scanf("%s%s", wd1 + , wd2 + );
int len1 = strlen(wd1 + );
int len2 = strlen(wd2 + );
for (int i = , j = ; i <= len2; i++, j++) {
int ans = ;
if (j > len1) {
j = ;
}
if (wd1[j] >= 'A' && wd1[j] <= 'Z') {
wd1[j] = wd1[j] - 'A' + 'a';
}
if (wd2[i] >= 'A' && wd2[i] <= 'Z') {
ans = 'A' - 'a';
wd2[i] = wd2[i] - 'A' + 'a';
}
char c = wd2[i] - (wd1[j] - 'a');
if (!('a' <= c && c <= 'z')) {
c += ;
}
putchar(c + ans);
}
return ;
}
[字符串][NOIP2012]Vigenère密码的更多相关文章
- NOIP2012 Vigenère 密码
1.Vigenère 密码 (vigenere.cpp/c/pas) [问题描述] 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法——Vigenère 密码.V ...
- [NOIP2012] 提高组 洛谷P1079 Vigenère 密码
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- Vigenère密码 2012年NOIP全国联赛提高组(字符串模拟)
P1079 Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简 ...
- Noip2012 提高组 Day1 T1 Vigenère 密码
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- luoguP1079 Vigenère 密码 题解(NOIP2012)
P1079 Vigenère 密码 题目 #include<iostream> #include<cstdlib> #include<cstdio> #includ ...
- Vigenère密码
来源 NOIP2012复赛 提高组 第一题 描述 16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法--Vigenère密码.Vigenère密码的加密解密算法简单易用 ...
- 08:Vigenère密码
08:Vigenère密码 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法— ...
- NOIP 2012 Vigenère 密码
洛谷 P1079 Vigenère 密码 https://www.luogu.org/problemnew/show/P1079 JDOJ 1779: [NOIP2012]Vigenèr密码 D1 T ...
- NOIp 2012 #1 Vigenère 密码 Label:模拟
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
随机推荐
- Updates were rejected because the tip of your current branch is behind 问题出现解决方案
提供如下几种方式: 1.使用强制push的方法(多人协作时不可取): git push -u origin master -f 2.push前先将远程repository修改pull下来 git pu ...
- 开机自启动 centos 7
开机自启动,写入必要的命令即可.vim /etc/rc.d/rc.local
- 从Tomcat的处理web请求分析Java的内存模型
Tomcat作为一个java应用,同样是有主线程和子线程的.主线使用while(true)的方式一直循环,等待客户端来连接.一个客户端来了之后,就从线程池中拿一个线程来处理请求,如果没有配置线程池,就 ...
- Calling Custom Actions from JavaScript
原文地址:https://www.wipfli.com/insights/blogs/connect-microsoft-dynamics-365-blog/160810-calling-custom ...
- 10K+,深度学习论文、代码最全汇总!
我们大部分人是如何查询和搜集深度学习相关论文的?绝大多数情况是根据关键字在谷歌.百度搜索.想寻找相关论文的复现代码又会去 GitHub 上搜索关键词.浪费了很多时间不说,论文.代码通常也不够完整.怎么 ...
- hadoop的hdfs中的javaAPI操作
package cn.itcast.bigdata.hdfs; import java.net.URI; import java.util.Iterator; import java.util.Map ...
- 性能监控工具以及java堆分析OOM
一.性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每 ...
- Laravel中队列的使用
以laravel5.5为例子: 1.配置队列:composer require "predis/predis:~1.0" a.在ENV中配置:QUEUE_DRIVER=redis ...
- centos svn强制要求提交代码时写注释
1. 重命名svn主目录中hooks的pre-commit.tmpl文件为pre-commit,并添加可执行权限 mv pre-commit.tmpl pre-commit chmod u+x pre ...
- RGB ECT 4BIT 压缩后质量远高于RGB ETC2 4BIT
今天突然发现这个.原来以为ETC2在任何方面都强于ETC,没想到...用了RGB ETC2 4BIT 压缩的贴图看起来有点糊,改用RGB ECT 4BIT后竟然非常清晰,而且大小与RGB ECT2 4 ...