这里的算法非常简单,就是“模拟”,注意编写每个传令官的算法时先分开测试,放在一起就会混淆。

POJ - 2041Unreliable Message

Time Limit: 1000MS Memory Limit: 30000KB 64bit IO Format: %I64d & %I64u

Description

The King of a little Kingdom on a little island in the Pacific Ocean frequently has childish ideas. One day he said, "You shall make use of a message relaying game when you inform me of something." In response to the King's statement, six servants were selected as messengers whose names were Mr. J, Miss C, Mr. E, Mr. A, Dr. P, and Mr. M. They had to relay a message to the next messenger until the message got to the King. Messages addressed to the King consist of digits ('0'-'9') and alphabet characters ('a'-'z', 'A'-'Z'). Capital and small letters are distinguished in messages. For example, "ke3E9Aa" is a message. Contrary to King's expectations, he always received wrong messages, because each messenger changed messages a bit before passing them to the next messenger. Since it irritated the King, he told you who are the Minister of the Science and Technology Agency of the Kingdom, "We don't want such a wrong message any more. You shall develop software to correct it!" In response to the King's new statement, you analyzed the messengers' mistakes with all technologies in the Kingdom, and acquired the following features of mistakes of each messenger. A surprising point was that each messenger made the same mistake whenever relaying a message. The following facts were observed. Mr. J rotates all characters of the message to the left by one. For example, he transforms "aB23d" to "B23da". Miss C rotates all characters of the message to the right by one. For example, she transforms "aB23d" to "daB23". Mr. E swaps the left half of the message with the right half. If the message has an odd number of characters, the middle one does not move. For example, he transforms "e3ac" to "ace3", and "aB23d" to "3d2aB". Mr. A reverses the message. For example, he transforms "aB23d" to "d32Ba". Dr. P increments by one all the digits in the message. If a digit is '9', it becomes '0'. The alphabet characters do not change. For example, he transforms "aB23d" to "aB34d", and "e9ac" to "e0ac". Mr. M decrements by one all the digits in the message. If a digit is '0', it becomes '9'. The alphabet characters do not change. For example, he transforms "aB23d" to "aB12d", and "e0ac" to "e9ac". The software you must develop is to infer the original message from the final message, given the order of the messengers. For example, if the order of the messengers is A->J->M->P and the message given to the King is "aB23d", what is the original message? According to the features of the messengers' mistakes, the sequence leading to the final message is "32Bad"->"daB23"->"aB23d"->"aB12d"->"aB23d": As a result, the original message should be "32Bad".

Input

The input format is as follows. n The order of messengers The message given to the King ... The order of messengers The message given to the King The first line of the input contains a positive integer n, which denotes the number of data sets. Each data set is a pair of the order of messengers and the message given to the King. The number of messengers relaying a message is between 1 and 6 inclusive. The same person may not appear more than once in the order of messengers. The length of a message is between 1 and 25 inclusive.

Output

The inferred messages are printed each on a separate line.

Sample Input

5

AJMP

aB23d

E

86AE

AM

6

JPEM

WaEaETC302Q

CP

rTurnAGundam1isdefferentf

Sample Output

32Bad

AE86

7

EC302QTWaEa

TurnAGundam0isdefferent

Source Japan 2003,Aizu

 #include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h> int main()
{
int n = ;
scanf("%d", &n);
char str[], order[];
for(int i = ; i < n; i++) {
scanf("%s", str);
scanf("%s", order);
int r = strlen(str);
int len = strlen(order);
char ch;
int t;
for(int i = r-; i >= ; i--) {
switch(str[i]){
printf("str -- %c\n", str[i]);
case 'J':
ch = order[len-];
for(int j = len-; j > ; j--) {
order[j] = order[j-];
}
order[] = ch;
break;
case 'C':
ch = order[];
for(int j = ; j < len-; j++) {
order[j] = order[j+];
}
order[len-] = ch;
break;
case 'E':
t = len/;
for(int i = ; i < t; i++) {
ch = order[i];
if(len%) {
order[i] = order[i+t+];
order[i+t+] = ch;
}
else {
order[i] = order[i+t];
order[i+t] = ch;
}
}
break;
case 'A':
t = len/;
for(int i = ; i < t; i++) {
ch = order[i];
order[i] = order[len--i];
order[len--i] = ch;
}
break;
case 'P':
for(int i = ; i < len; i++) {
if(order[i] >= '' && order[i] <= '') {
if(order[i] == '') order[i] = '';
else order[i]--;
}
}
break;
case 'M':
for(int i = ; i < len; i++) {
if(order[i] >= '' && order[i] <= '') {
if(order[i] == '') order[i] = '';
else order[i]++;
}
}
break;
}
}
printf("%s\n", order);
}
return ;
}

POJ - 2041Unreliable Message的更多相关文章

  1. OpenJudge / Poj 2141 Message Decowding

    1.链接地址: http://poj.org/problem?id=2141 http://bailian.openjudge.cn/practice/2141/ 2.题目: Message Deco ...

  2. Eclipse 4.2 failed to start after TEE is installed

    ---------------  VM Arguments---------------  jvm_args: -Dosgi.requiredJavaVersion=1.6 -Dhelp.lucene ...

  3. POJ 2774 Long Long Message 后缀数组

    Long Long Message   Description The little cat is majoring in physics in the capital of Byterland. A ...

  4. poj 2774 Long Long Message 后缀数组基础题

    Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 24756   Accepted: 10130 Case Time Limi ...

  5. 后缀数组(模板题) - 求最长公共子串 - poj 2774 Long Long Message

    Language: Default Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 21 ...

  6. POJ 2774 Long Long Message (Hash + 二分)

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 34473   Accepted: 13 ...

  7. POJ 2774 Long Long Message [ 最长公共子串 后缀数组]

    题目:http://poj.org/problem?id=2774 Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total ...

  8. POJ 题目2774 Long Long Message(后缀数组,求最长公共子串长度)

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 23696   Accepted: 97 ...

  9. Long Long Message POJ - 2774 后缀数组

    The little cat is majoring in physics in the capital of Byterland. A piece of sad news comes to him ...

随机推荐

  1. ArcGIS API for JavaScript 4.0(一)

    原文:ArcGIS API for JavaScript 4.0(一) 最近ArcGIS推出了ArcGIS API for JavaScript 4.0,支持无插件3D显示,而且比较Unity和Sky ...

  2. LightOj1028 - Trailing Zeroes (I)---求因子个数

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1028 题意:给你一个数 n (1<=n<=10^12), 然后我们可以把它 ...

  3. asp.net 把数据导出为excel

    本篇介绍c#中如何使用DataTable导出Excel,至于其他的导出方法,这里不作介绍! 1.首页从数据库读取数据,得到DataTable: DataTable dt = HelperExecute ...

  4. 利用Aspose.Word控件实现Word文档的操作

    Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般 ...

  5. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  6. C语言课本实例

    1. 将一维数组的内容倒顺 #include <stdio.h>void func(int *s,int n){ int i,temp; for(i=0;i<n/2;i++) { t ...

  7. Kafka+Storm+HDFS整合实践

    在基于Hadoop平台的很多应用场景中,我们需要对数据进行离线和实时分析,离线分析可以很容易地借助于Hive来实现统计分析,但是对于实时的需求Hive就不合适了.实时应用场景可以使用Storm,它是一 ...

  8. 最流行的PHP 代码规范

    “PHP是最好的编程语言” ;-) 那么PHPer习惯使用什么样的代码规范呢?sideeffect.kr通过分析GitHub上托管的开源代码,得出了一些有趣的结果,让我们一起来看看吧. 缩进 空格(7 ...

  9. JQuery获取页面关闭事件

    <script type="text/javascript" language="javascript"> $(window).unload(fun ...

  10. java 部署服务报:Bad version number in .class file

    问题原因:服务器jdk版本和class文件的版本不一致,一般是服务器的jdk版本低于class文件的编译版本 解决方案:修改服务器的jdk