当前位置: 首页 > 编程日记 > 正文

POJ-2159(Water)

2159:Ancient Cipher

  • 查看
  • 提交
  • 统计
  • 提问

时间限制:

1000ms

内存限制:

65536kB

描述

Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form to prevent eavesdropping(窃听、窃取). The most popular ciphers in those times were so called substitution cipher and permutation cipher.
Substitution cipher changes all occurrences of each letter to some other letter. Substitutes for all letters must be different. For some letters substitute letter may coincide with the original letter. For example, applying substitution cipher that changes all letters from 'A' to 'Y' to the next ones in the alphabet, and changes 'Z' to 'A', to the message (1)"VICTORIOUS" one gets the message (2)"WJDUPSJPVT".
Permutation cipher applies some permutation to the letters of the message. For example, applying the permutation <2, 1, 5, 4, 3, 7, 6, 10, 9, 8> to the message "VICTORIOUS" one gets the message "IVOTCIRSUO".  
It was quickly noticed that being applied separately, both substitution cipher and permutation cipher were rather weak. But when being combined, they were strong enough for those times. Thus, the most important messages were first encrypted using substitution cipher, and then the result was encrypted using permutation cipher. Encrypting the message "VICTORIOUS" with the combination of the ciphers described above one gets the message (3)"JWPUDJSTVP".
Archeologists(考古学家) have recently found the message engraved on a stone plate. At the first glance it seemed completely meaningless, so it was suggested that the message was encrypted with some substitution and permutation ciphers. They have conjectured the possible text of the original message that was encrypted, and now they want to check their conjecture. They need a computer program to do it, so you have to write one.

输入

Input contains two lines. The first line contains the message engraved on the plate. Before encrypting, all spaces and punctuation marks were removed, so the encrypted message contains only capital letters of the English alphabet. The second line contains the original message that is conjectured to be encrypted in the message on the first line. It also contains only capital letters of the English alphabet.
The lengths of both lines of the input are equal and do not exceed 100.

输出

Output "YES" if the message on the first line of the input file could be the result of encrypting the message on the second line, or "NO" in the other case.

样例输入             

JWPUDJSTVP

VICTORIOUS

样例输出

YES

  • 查看
  • 提交
  • 统计
  • 提问

Tips:

明文与密文的字母频率的数组应该是一样的,即明文中某字母出现8次,密文中也必须有某个字母出现8次。

所以字母种类,字母频率同时相等时,即被破解。

#include"iostream"
#include"string"
using namespace std;
int main()
{
 string initial,encrypted;
 cin>>initial;
 cin>>encrypted;
 int a[26],b[26];//标记initial和encrypted的26个字母的出现频率
 for(int i=0;i<26;i++)
     a[i]=0;
 for(int i=0;i<26;i++)
     b[i]=0;
 for(int i=0;i<initial.size();i++)
 {
  a[initial[i]-'A']++;
  b[encrypted[i]-'A']++;
 }
 int i,j;
 for(i=0;i<26;i++)
 {
  for(j=0;j<26;j++)
   if(a[i]==b[j])
   {
    b[j]=-1;//标记已经取出的encrypted的频率
    break;
   }
  if(j==26)//说明initial的某个字母的频率所有encrypted的字母频率均无法匹配
   break;
 }
 if(j==26)//匹配失败
  cout<<"NO"<<endl;
 else if(i==26)//匹配成功
  cout<<"YES"<<endl;
}

转载于:https://www.cnblogs.com/lzhitian/archive/2011/08/16/2140074.html

相关文章:

tensor乘运算

torch.mul(a, b) 是矩阵 对应位相乘&#xff0c;即点乘操作&#xff0c; a和b的维度必须相等&#xff0c;a的维度是(1,2)&#xff0c; 则b的维度必须是&#xff08;1,2&#xff09;&#xff0c; 返回还是&#xff08;1,2&#xff09;的矩阵 torch.mm(a,b)是矩阵a和b矩阵相乘&am…

android,与PHP通信,返回JSON

小项目需要读取数据库&#xff0c;刚好手头有服务器&#xff0c;处于某些考虑&#xff0c;还是想远程读数据&#xff0c;所遇异常 Logcat异常&#xff1a;SingleClientConnManager(411): Invalid use of SingleClientConnManager: connection still allocated. Make sure to re…

【工具软件】webstorm配置

下载webstorm和jar包&#xff1a; 下载网址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Tnp4TqWnu8dQzv6ds7zhyw 提取码&#xff1a;de0f 下载软件&#xff1a; 1、 2、选择一个非C盘的位置安装 3、在1处选自你电脑的操作系统&#xff0c;大概率是64位的&#x…

美国爱因斯坦计划技术分析

【本文与2014年6月16日再次编辑&#xff0c;增加了一个续文的链接】【本文于2011年8月30日再次更新&#xff0c;修订并补充了有关爱因斯坦3的一些内容】【本文于2011年8月20日更新】【前言】本文始于对网络安全态势感知的研究。而美国的这个爱因斯坦计划可以看成是网络态势感知…

[C].运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和…

[kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

L - 还是畅通工程 题目链接&#xff1a;https://vjudge.net/contest/66965#problem/L 题目&#xff1a; 某省调查乡村交通状况&#xff0c;得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通&#xff08;但不一定有直…

[建议] GCC 新手入门【转】

本文是写给 gcc 新手的入门文章&#xff0c;所以内容比较简单。如果你知道下面3条命令都可以编译c的话&#xff0c;就不用在本文浪费时间了 g -Wall hellocpp.cpp gcc -Wall hellocpp.cpp -lstdc gfortran -Wall hellocpp.cpp -lstdc 注&#xff1a;本文最新版在wiki中 http:…

【java】如何判断数组中的内容是否重复

代码实现&#xff1a; public static boolean judgeArray(long[] arraySample) {HashSet<Long> hashSet new HashSet<Long>();for (int i 0; i < arraySample.length; i) {hashSet.add(arraySample[i]);}if (hashSet.size() arraySample.length) {return tr…

html标签的赋值与取值

现在有一个Add.ascx 和一个Add.aspx页面&#xff0c;Add.ascx中有一个html标签&#xff0c;如果标签有默认值的话在Add.ascx.cs的Page_Load中有Request.Form["标签ID"]就可以取到。 下面说赋值&#xff0c;因为我的标签是有默认值的&#xff0c;所以也就不能用<%%…

Entity Framework应用:根据实体的EntityState状态实现增删改查

在上一篇文章中&#xff0c;我们讲解了使用EF实现简单的增删改成&#xff0c;在这篇文章中我们使用实体的EntityState状态来优化数据的增删改查。 一、修改数据 上篇文章中的修改数据的方法是EF官方推荐的方式&#xff0c;即先查询出来要修改的数据&#xff0c;然后在修改。但是…

几种Normalization算法.md

神经网络有各种归一化算法&#xff0c;BN&#xff0c;LN&#xff0c;IN,GN。 1. Batch Normalization 实现流程&#xff1a;对Tensor为[N, C, H, W], 把第1个样本的第1个通道&#xff0c;加上第2个样本的第1个通道&#xff0c; 加上第N个样本的第1个通道&#xff0c;求平均&…

【java】浅谈注释

java中的注释可以分为三大类&#xff1a;行注释、块注释以及文档注释 行注释&#xff1a; 基本语法&#xff1a; //注释的内容 产生 效果&#xff1a;该行//之后的内容就都被注释了 块注释&#xff1a; 基本语法&#xff1a; /* 注释内容 */ 注&#xff1a;块注释禁止嵌套…

一个“复制/删除”方式的滚动

一个利用复制和删除节点的方式做的滚动。。。不知性能怎样呢&#xff1f; 一个滚动Left Right 12345678转载于:https://www.cnblogs.com/lbsgood/archive/2012/06/08/2541177.html

OSPF-网络类型(ip ospf network ?)

在介绍之前首先看个表&#xff01;二层链路与OSPF网络类型有什么联系呢&#xff1f;其实中间的关系可大了&#xff0c;OSPF网络类型应该说是根据二层链路的类型来选择的&#xff0c;而且两者应用匹配&#xff0c;也就是当OSPF网络类型支持组播时&#xff0c;如果二层链路不支持…

E20180525-hm

sensitive adj. 敏感的; 感觉的; [仪] 灵敏的; 易受影响的; lookup v. 查找; 查表; speedy adj. 快的&#xff0c;迅速的; 敏捷的 marshal vt. 整理&#xff0c;排列&#xff0c;集结; vi. 排列; 编队; n. 元帅; 典礼官; 执法官; 消防局长; feature n. 特征&#xff0c;特点;…

[题解]RGB Substring (hard version)-前缀和(codeforces 1196D2)

题目链接&#xff1a;https://codeforces.com/problemset/problem/1196/D2 题意&#xff1a; q 个询问&#xff0c;每个查询将给你一个由 n 个字符组成的字符串s&#xff0c;每个字符都是 “R”、“G” 或 “B”。 求出更改初始字符串 s 中的最小字符数&#xff0c;以便更改后将…

C#连接MySql

1.从http://prdownloads.sourceforge.net/mysqldrivercs/MySQLDriverCS-n-EasyQueryTools-3.0.18.exe?download上下载MySQLDriverCS. 然后安装。2.从安装目录中把MySQLDriverCS.dll.添加到.net的组件 1 public void Connect_Net()2 {3 MySQLConnection m…

【java】快速复制数组方法arraycopy的使用

通常进行数组的复制需要使用到循环&#xff0c;然而jdk中已经给我们封装好了一个专门用来复制数组的快捷方法 arraycopy&#xff08;&#xff09; 使用方法&#xff1a; System.arraycopy(src, srcPos, dest, destPos, length); 注&#xff1a; src:被复制的数组 srcPos&am…

【指针的高级声明】

在分享这些高级声明之前&#xff0c;我想&#xff0c;大家有必要知道各个操作符在C、C语言中的优先级&#xff0c;以便识别欲讲述的高级声明。这里先列举一些高级声明的例子&#xff0c;能自己揣摩清楚最好不过了&#xff0c;如果有想不懂的地方&#xff0c;请参见下方的识别方…

【大数据实时计算框架】Storm框架

一、大数据实时计算框架 1、什么是实时计算&#xff1f;流式计算&#xff1f; &#xff08;一&#xff09;什么是Storm?Storm为分布式实时计算提供了一组通用原语&#xff0c;可被用于“流处理”之中&#xff0c;实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方…

引用-ZIGBEE-ZSTACK网络配置相关问题

下面是以道友问的问题&#xff0c;这里简单做分析&#xff0c;仅供交流学习用&#xff0c;有什么不对之处还请各位大虾指正。鄙人邮箱为&#xff1a;peterpanjy163.com. 欢迎交流&#xff01;&#xff01;1&#xff1a; 最主要的就是路由问题。我用06协议栈自带的例子程序sampl…

GHOST还原教程详细

要提醒您注意的是在使用 GHSOT 软件恢复系统时&#xff0c;请勿中途中止&#xff01;如果您在恢复过程中重新启动了计算机那么您的计算机将无法启动&#xff01;必定要接双硬盘或用光盘系统启动才可恢复 在您的系统遇到以下的情况之一 怀疑或确定您的系统中了病毒或木马 系统运…

【java】增强for循环的简单使用(遍历数组)

public class Test4 {public static void main(String[] args) {int[] intArray {1, 2, 4, 5, 7, 8};for(int number : intArray) {System.out.println(number);}} }

字符设备驱动程序 2

三、字符设备的注册内核内部使用struct cdev结构来表示字符设备。在内核调用设备的操作之前&#xff0c;必须分配并注册一个或多个struct cdev。代码应包含<linux/cdev.h>&#xff0c;它定义了struct cdev以及与其相关的一些辅助函数。 注册一个独立的cdev设备的基本过程…

qmake 简易教程

qmake 简易教程 qmake是Qt开发中默认的构建工具。posted on 2018-05-27 00:09 JichengTang 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/tangjicheng/p/9094857.html

MSF连环攻击实验

MSF连续攻击实验 一、实验拓扑 二、实验环境 Windows XP BT 5 32位 三、实验原理 通过扫描 XP主机&#xff0c;利用扫描出的漏洞建立 TCP会话&#xff0c;通过进程的提权&#xff0c;进一步获取目标机的控制权限 四、实验目的 掌握MSF连续攻击的原理和利用MSF攻击检测技术进行服…

【java】关于面向对象优点的个人理解

本文只是一些个人的理解&#xff0c;没有过多的进行基础理论的堆积&#xff0c;尽量说人话&#xff0c;让不懂的人也可以有一点概念。 相同的目标&#xff1a; 去第一餐厅吃饭 面向过程&#xff1a; 进入第一餐厅、买饭、吃饭 面向对象&#xff1a; 创建对象 第一餐厅、同…

(转)flash的Socket通讯沙箱和安全策略问题

一、沙箱和安全策略问题 1、此问题发生在连接时&#xff0c;准确地说是连接前&#xff0c;分别两种情况&#xff1a; 1.本地播放 本地播放时&#xff0c;默认情况下Flash Player将不允许swf访问任何网络。 访问http://www.macromedia.com/suppor…

asp.net code-behind

asp.net code-behind 技术是指页面与代码分离。 asp.net framework允许创建两种不同的页面&#xff0c;一种是单页面&#xff08;页面包含页面代码与控件&#xff0c;页面代码包含在<script runat"server"></script>标签中&#xff09;&#xff0c;另外一…

python 基础_列表的其他操作 4

一.查找某个元素在数组中出现的次数 &#xff0c;count的运用 a [a,b,c,c,c,a] print(a.count(c)) 二.把一个元素插入到另一个元素的末尾&#xff0c;extend。如下面&#xff0c;把b里面的值赋予给a。 a [a,b,c] b [d,e,f] a.extend(b) print (a) print (b) 输出的结果为 [a…