首页 > 其他分享 >[NOIP2012]Vigenère 密码

[NOIP2012]Vigenère 密码

时间:2023-05-25 16:34:51浏览次数:37  
标签:题目 NOIP2012 int Vigen re 密钥 size

题目链接

https://ac.nowcoder.com/acm/contest/19306/1052

题目分析

根据题目给的图发现,密文的会因为密钥的起始位置偏移,形成了一个环。
所以只要我们知道密钥的起始位置,密钥与密钥的距离(密文-密钥),就可以求出明文的位置。

AC代码

#include <iostream>

using namespace std;

string k, s, ans;

int main()
{
    cin >> k >> s;
    
    for (int i = 0; i < k.size(); ++ i)
        if (k[i] < 97) k[i] += 32;
    
    int j = 0, pos = 0;
    for (int i = 0; i < s.size(); ++ i)
    {
        int mod = j % k.size();
        int yao = k[mod] - 'a';
        if (s[i] >= 97 && s[i] <= 122)        // 小写的情况
        {
            int mi = s[i] - 'a';
            pos = (mi - yao + 26) % 26;
            ans.push_back(pos + 'a');
        }
        else    // 大写的情况
        {
            int mi = s[i] - 'A';
            pos = (mi - yao + 26) % 26;
            ans.push_back(pos + 'A');
        }
        j ++ ;
    }

    cout << ans;
    return 0;
}

标签:题目,NOIP2012,int,Vigen,re,密钥,size
From: https://www.cnblogs.com/ClockParadox43/p/17431733.html

相关文章

  • 在本地运行spark程序,出现Scala module 2.13.4 requires Jackson Databind version >=
    这是jackson多版本题,我们需要屏蔽所有hadoop组件中的Jackson,在pom.xml文件里修改:添加<exclusions><exclusion><groupId>com.fasterxml.jackson.module</groupId><artifactId>*</artifactId></exclusion><exclusion>......
  • java removeAll 返回2个数组的差集
    注意:removeAll不是差集importjava.util.ArrayList;publicclassImoocStudent{publicstaticvoidmain(Stringargs[]){ArrayList<String>objArray=newArrayList<String>();ArrayList<String>objArray2=newArrayList......
  • My piano dream.....
      海伦GH178从小就想象能有一架三角琴在我房子里......可惜还没实现....英格尔数码钢琴很酷的琴,从没想过能弹这种琴,应该,质感会不一样吧...这个,是梦想中的琴了...白得单纯的外表,单纯的声音,感觉就像在海滩上弹琴一样...海伦HL125NG我目前的现状,虽然牌子不同,但长得还是一......
  • Red day...
        回家快半个月了,GOD,今天第一眼看到太阳.虽然风还是很冷,虽然气温还是不高,可是,总算是见到阳光了....     新年前的购物,每一次都能让人兴奋,吃的,穿的, 他们说,你怎么还像个小孩,买东西只买好吃的.....无言了,这个问题,我怎么会知道答案. 今天又买了......
  • error C1083: 无法打开包括文件:“dxsdkver.h”: No such file or directory
    参考1:https://www.cnblogs.com/AI-Algorithms/p/3778527.html参考2:https://learn.microsoft.com/zh-cn/windows/win32/directx-sdk--august-2009-?redirectedfrom=MSDN参考3:https://www.microsoft.com/en-us/download/details.aspx?id=6812......
  • grep -A -B -C使用介绍
    grep-A显示匹配指定内容及之后的n行grep-B 显示匹配指定内容及之前的n行grep-C 显示匹配指定内容及其前后各n行 grep-A5nametest.txt搜索匹配test.txt文件中与”name”字符串匹配的行,并显示其后的5行......
  • firefox旧版本下载后打开为为最新版怎么办
    firefox默认自动更新为最新版,一定要注意!!!问题描述:我有一个最新版firefox64.0,但最新版不兼容firebug,所以我必须下载旧版本的。在我旧版本下载完成后(这时候我的新版firefox是打开着的,而且处于自动更新状态),旧版本打开,仍然显示是最新版如何查看自己的firefox版本:https://jingyan.baidu.c......
  • Firefox8.0.1及对应firebug1.9.0,firepath0.9.7.1.1插件下载
    firefox8.0.1链接:https://pan.baidu.com/s/1x9M6dimmvQrBee_iSeVcZg提取码:ewy8旧版本安装注意,安装前必看:firefox旧版本下载后打开为为最新版怎么办firebug1.9.0链接:https://pan.baidu.com/s/1g55zj8BjciR4U3Mn1ApqFQ提取码:zfj3firepath0.9.7.1.1链接:https://pan.baidu.com/s/......
  • 2.Redis的安装与配置-动力节点Redis7笔记
    2Redis的安装与配置这里是要将Redis安装到Linux系统中。2.1Redis的安装2.1.1克隆并配置主机修改主机名:/etc/hostname修改网络配置:/etc/sysconfig/network-scripts/ifcfg-ens332.1.2安装前的准备工作2.1.2.1安装gcc由于Redis是由C/C++语言编写的,而从官网下载的Redis......
  • Qt正则表达式类QRegExp(附检验小程序)
           在许多场景中,我们需要验证用户输入的数据是否有效,或者是查找并修改文本,或者是提取指定数据,为此,相对于Qstring的一些函数,QT提供了一个更加强大的类——QRegExp,使用函数配合正则表达式来操作字符串,QRegExp可以进行下面的操作,并附带检验小程序,可在文末下载。一.正则表达......