UVA1339仿射和换位密码

news/2024/7/5 19:38:11 标签: 密码学

UVA1339

【题目描述】:密码

古典密码学有两种密码,仿射和换位,给定一段明文,一段密文,看密文能否由这段明文,是否可能通过仿射和换位得到。

【算法分析】:这道题目的关键是读题。因为接触过密码学,所以容易理解。

仿射密码:M=(m+a)%26,注意:对于相同的字母,仿射到同一个字母

换位密码:就是把所有的字母重排。

所以这道提的关键是,无论怎么仿射和置换,不用的字母总数不会增加,相同的字母的个数不会增加。即使通过很多次这样的操作也是这样。所以统计两段密文,不同的字母出现的个数,排序后比较即可。题外话:可能变换成功。

 
 1 //密码学:仿射密码和置换密码
 2 
 3 //难点:读题和归纳
 4 
 5 #include<iostream>
 6 
 7 #include<stdio.h>
 8 
 9 #include<string.h>
10 
11 #include<algorithm>
12 
13 #include<stdlib.h>
14 
15 #include<math.h>
16 
17 #include<queue>
18 
19 #include<vector>
20 
21 #include<map>
22 
23 #define MAXN 10+5
24 
25 #define MAXM 20000+5
26 
27 #define oo 9556531
28 
29 #define eps 0.000001
30 
31 #define PI acos(-1.0)//这个精确度高一些
32 
33 #define REP1(i,n) for(int i=0;i<=(n);i++)
34 
35 #define REP2(i,n) for(int i=1;i<=(n);i++)
36 
37 using namespace std;
38 
39 char s1[1005],s2[1005];
40 
41 int ap1[30],ap2[30];
42 
43 bool isok()
44 
45 {
46 
47     memset(ap1,0,sizeof(ap1));
48 
49     memset(ap2,0,sizeof(ap2));
50 
51     for(int i=0; s1[i]!='\0'; i++)
52 
53     {
54 
55         ap1[s1[i]-'A'+1]++;
56 
57         ap2[s2[i]-'A'+1]++;
58 
59     }
60 
61     sort(ap1,ap1+27);
62 
63     sort(ap2,ap2+27);
64 
65     for(int i=0; i<27;i++)
66 
67     {
68 
69         if (ap1[i]!=ap2[i]) return false;
70 
71     }
72 
73     return true;
74 
75 }
76 
77 int main()
78 
79 {
80 
81     while(cin>>s1>>s2)
82 
83     {
84 
85         if (isok()) cout<<"YES"<<endl;
86 
87         else cout<<"NO"<<endl;
88 
89     }
90 
91     return 0;
92 
93 }

 

 

【关键词】:密码学(一般出题不难)

转载于:https://www.cnblogs.com/little-w/p/3525282.html


http://www.niftyadmin.cn/n/1120694.html

相关文章

用于压缩视频感知增强的多目标网络自适应时空融合

Adaptive Spatial-Temporal Fusion of Multi-Objective Networks for Compressed Video Perceptual Enhancement Abstract 由于两个视频对之间仍然不存在合适的感知相似性损失函数&#xff0c;因此严重压缩视频的感知质量增强是一个难以解决的问题。由于很难设计统一的训练目标…

私聊,点击查看大图,卡顿

用的 UIImage *image [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:item.imageURL]]]; imageWithData当然会卡顿 正确的姿势: - (void)showWithUrl:(NSString *)imageUrl originaFrame:(CGRect)originaFrame thumbImage:(UIImage *)thumbImage…

vue2.x源码解析系列二: Vue组件初始化过程概要

写在前面的话&#xff1a;关于作者言川 笔名言川, 前端工程师&#xff0c;精通 Vue/Webpack/Git等&#xff0c;熟悉Node/React等&#xff0c;涉猎广泛&#xff0c;对算法/后端/人工智能/linux等都有一定研究。开源爱好者&#xff0c;github上目前总计5000 Star。 我的github主页…

Android使用CountDownTimer实现验证码倒计时

等待总是让人感到焦急和厌烦的&#xff0c;特别是看不到进展的等待。所以为了不让用户痴痴地等&#xff0c;我们在进行某些耗时操作时&#xff0c;一般都要设计一个进度条或者倒计时器&#xff0c;让进度可视化&#xff0c;告诉用户“等待之后更精彩”。在使用短信验证码注册或…

简单的Chrome 扩展开发

一、入门 这是制作chrome扩展插件的入门指南&#xff0c;不需要任何编程基础&#xff0c;看完这个后&#xff0c;我们就着手做自己的Chrome插件了。好吧&#xff0c;我们现在就开始&#xff0c;其实我也是个新手。 准备工具做任何事情都要有个工具&#xff0c;制作chrome插件需…

Html直接表单直传阿里云存储OSS示例

目的 本教程的目录是通过三个例子介绍如何在Html表单提交直传OSS第一个例子&#xff1a;讲解如何在JS直接签名&#xff0c;直接表单上传到OSS第二个例子&#xff1a;讲解如何在从后端PHP获取签名&#xff0c;然后直接表单上传到OSS第三个例子&#xff1a;讲解如何在从后端PHP…

用于增强压缩视频质量的可变形卷积密集网络

DEFORMABLE CONVOLUTION DENSE NETWORK FOR COMPRESSED VIDEO QUALITY ENHANCEMENT ABSTRACT 与传统的视频质量增强不同&#xff0c;压缩视频质量增强的目标是减少视频压缩带来的伪影。现有的多帧压缩视频质量增强方法严重依赖于光流&#xff0c;效率低&#xff0c;性能有限。…

PostgreSQL PostGIS 的5种空间距离排序(knn)算法

摘要&#xff1a; 标签 PostgreSQL , PostGIS , operator , ops , knn 背景 PostgreSQL GiST索引支持排序接口&#xff0c;可以支撑空间、标准、数组、文本向量、文本等类型的排序。标签 PostgreSQL , PostGIS , operator , ops , knn 背景 PostgreSQL GiST索引支持排序接口&am…