NOIP-Vigenère密码
题目描述
1.®运算忽略参与运算的字母的大小写,并保持字母在明文 M 中的大小写形式;
2.当明文 M 的长度大于密钥 k 的长度时,将密钥 k 重复使用。
例如,明文 M=Helloworld ,密钥 k=abc 时,密文 C=Hfnlpyosnd 。
输入描述:
共 2 行。
第一行为一个字符串,表示密钥 k ,长度不超过 100 ,其中仅包含大小写字母。
第二行为一个字符串,表示经加密后的密文,长度不超过 1000 ,其中仅包含大小写字母。
输出描述:
一个字符串,表示输入密钥和密文所对应的明文。
备注:
对于 100%的数据,输入的密钥的长度不超过 100 ,输入的密文的长度不超过 1000 ,且都仅包含英文字母。
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char s1[],s2[],s3[];
cin>>s1>>s2;
int j = ,i;
int max = strlen(s1);
for(i=;i<strlen(s2);i++)
{
if(s2[i]>='a'&&s2[i]<='z')
{
if(s1[j]>='a'&&s1[j]<='z')
{
s3[i] = 'a' + ( + (s2[i] - 'a') - (s1[j] - 'a'))%;
}
else if(s1[j]>='A'&&s1[j]<='Z')
{
s3[i] = 'a' + ( + (s2[i] - 'a') - (s1[j] - 'A'))%;
}
}
else if(s2[i]>='A'&&s2[i]<='Z')
{
if(s1[j]>='a'&&s1[j]<='z')
{
s3[i] = 'A' + ( + (s2[i] - 'A') - (s1[j] - 'a'))%;
}
else if(s1[j]>='A'&&s1[j]<='Z')
{
s3[i] = 'A' + ( + (s2[i] - 'A') - (s1[j] - 'A'))%;
}
} j = (j+)%max;
}
for(i=;i<strlen(s2);i++)
cout<<s3[i];
}
总结
- 如何让数字在一个指定的区间内循环
- cout输出字符串时遇到的问题
1.比如要让数字在5~8之间循环 x 为初始位置 n为移动单位 4为元素个数 5为初始元素
加: 5 + ((x - 5)+ n)%4
减: 5 + (4 + (x - 5)- n ) %4
2.直接输出时可能后面会输出空字符,最好控制输出的位数
NOIP-Vigenère密码的更多相关文章
- NOIp 2012 #1 Vigenère 密码 Label:模拟
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- 2012 noip提高 Vigenère 密码
P1079 Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de VigenèreBlaisedeVigene`re 设计了一种多表密码加密算法―― VigenèreVigene ...
- Vigenère密码 2012年NOIP全国联赛提高组(字符串模拟)
P1079 Vigenère 密码 题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简 ...
- NOIP 2012 Vigenère 密码
洛谷 P1079 Vigenère 密码 https://www.luogu.org/problemnew/show/P1079 JDOJ 1779: [NOIP2012]Vigenèr密码 D1 T ...
- Vigenère 密码NOIP 2012 提高组 第一天 第一题
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- [NOIP2012] 提高组 洛谷P1079 Vigenère 密码
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- Vigenère 密码(luogu 1079)
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- 洛谷 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 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- Vigenère密码
来源 NOIP2012复赛 提高组 第一题 描述 16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法--Vigenère密码.Vigenère密码的加密解密算法简单易用 ...
随机推荐
- IMDB-二分类问题
from keras.datasets import imdb from keras.utils.np_utils import to_categorical import numpy as np f ...
- git知识总结-1.git基础之git分布式
1.前言 我们在介绍git版本管理的时候,没有提到“服务器”的概念,所有的版本管理操作,都是在本地进行的.这就是git与其它版本管理工具(如CVS.SVN等)最本质的区别所在:分布式. 所谓的分布式, ...
- 【interview】Microsoft面经
~~收集的面经~~ 1. 实现hashtable的put 和get操作 参考:https://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%B ...
- RSA加密解密算法
/** * RSA加密解密算法 * Class Rsa */ class Rsa { /** * 获取pem格式的公钥 * @param $public_key 公钥文件路径或者字符串 * @retu ...
- [MySQL]如何支持utf8格式的UCS4unicode字符
filed中必须是CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci: 连接时必须set names "utf8mb4": 这是一段P ...
- Typescript04---模块、命名空间
在Typescript1.5 中,内部模块称作命名空间,外部模块成为模块 一.什么是模块? 模块就是一个或一组功能模块. 模块在其自身的作用域里执行,而不是在全局作用域里.意味着,模块中的变量.函数. ...
- ios手机访问H5页面中$(document).on绑定无效问题
1.问题描述 用amazeUI做了个手机端网站,网站头部是一个点击按钮下拉菜单,点击页面其余区域下拉菜单隐藏.在chrome模拟安卓和iOS都可以正常触发,但是在真机实测的时候,iOS上面失效了.简单 ...
- 关于解决微信支付sdk中NoClassDefFoundError: Failed resolution of: org.apache.http.conn.ssl.DefaultHostnameVerifier;
导入依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>ht ...
- The type javax.servlet.http.HttpServletResponse cannot be resolved. It is indirectly referenced from required .class files
The type javax.servlet.http.HttpServletResponse cannot be resolved. It is indirectly referenced from ...
- js 去掉数组对象中的重复对象
export function deteleObject(obj) { var uniques = []; var stringify = {}; for (var i = 0; i < obj ...