码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • openjudge 1.12.8 Vigenere密码


    OpenJudge - 08:Vigenère密码


    解题思路:

    1.由题可得,明文通过密匙来变成密文,题目中所给的是密匙串和密文串,那就是根据这两个串来设定明文并输出

    2.观察图中的信息,明文转密文的公式是密文=明文+(密匙-A),那么明文=密文-(密匙-A),观察中间的字符信息,如果密匙很大为为P的时候,明文为L的时候,对应的密文是A,即L=A-(P-A)结果很明显比65小,但是结果是L,所以可以得出,如果结果小于65的话,要再加26形成环状

    3.题目中还有一个关键信息,就是运算的时候忽略大小写,但是输出的时候要保留大小写的格式,所以可以设置一个bool监控数组,在刚开始遍历的时候,如果这个位置的字符是小写字母,则打上标记,然后将密文和密匙全部转化为大写字母

    4.接下来开始遍历密文,根据公式转化为明文,在遍历过程中,有一个信息为如果密匙的长度不够,将重复利用,那么利用模运算让密匙实现重复利用m[i]=c[i]-(k[i%len_k]-65);//明文=密文-(密匙-65

    5.最后按照监控数组的标记输出即可


    1. #include
    2. using namespace std;
    3. bool vis[1005];
    4. char m[1005];
    5. int main()
    6. {
    7. string k,c;
    8. cin>>k>>c;
    9. int len_k=k.length();
    10. int len_c=c.length();
    11. for(int i=0;i<=len_c-1;i++)
    12. {
    13. if(c[i]>='a'&&c[i]<='z')//如果该字符是小写字母
    14. {
    15. vis[i]=1;//监控数组标记为1
    16. c[i]=c[i]-32;//将小写字母转化为大写字母
    17. }
    18. }
    19. for(int i=0;i<=len_k-1;i++)
    20. if(k[i]>='a'&&k[i]<='z')
    21. k[i]=k[i]-32;//将密匙字符全部转化为大写字母
    22. for(int i=0;i<=len_c-1;i++)//遍历密文中的每个字符
    23. {
    24. m[i]=c[i]-(k[i%len_k]-65);//明文=密文-(密匙-65)
    25. if(m[i]<65)//如果明文小于65 A的ASCLL码
    26. m[i]=m[i]+26;//让他回到Z
    27. }
    28. for(int i=0;i<=len_c-1;i++)//遍历明文表
    29. {
    30. if(vis[i]==1)//如果该位置原本是小写
    31. m[i]=m[i]+32;//变成小写字母
    32. cout<//输出该字符
    33. }
    34. return 0;
    35. }

  • 相关阅读:
    前端培训丁鹿学堂:ts入门完结篇
    【项目】若依整合mybatisplus和lombok
    【SLAM】视觉SLAM简介
    Golang一日一库之regex
    在线教育线上课堂知识付费源码 网络课堂在线课堂系统源码 含完整代码包和搭建教程
    JavaEE-线程进阶
    Android开发笔记(一百八十九)利用LAME录制MP3音频
    缓存一梭子, 程序员的快乐就是如此简单
    AI :微软推出 AutoGen 框架,帮开发者创建基于大语言模型的复杂应用
    Could not load dynamic library ‘cudart64_110.dll‘的解决方法
  • 原文地址:https://blog.csdn.net/weixin_60869516/article/details/126899463
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号