标签:字符串
字符串模拟。
给你一个26字母的转换表。然后给你一串密文+明文 的字符串,叫你解密,输出完整的密文+明文。
明文可能不完整,直接从字符串一半开始枚举,直到 明文第一个转换后能和 密文第一个相等,然后比下去。
这题被 >> 坑了许久,没注意>> 和 + 的优先级问题。
输出的时候可以建立一个反转表。
#include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<map> #include<stack> #include<iostream> #include<list> #include<set> #include<cmath> #define INF 0x7fffffff #define eps 1e-6 #define LL long long using namespace std; char table[26]; char extable[26]; char str[1000001]; int main() { int t,i; scanf("%d",&t); while(t--) { scanf("%s%s",table,str); for(i=0; i<26; i++) extable[table[i]-'a']=i; int len=strlen(str); if(len&1)i=(len>>1)+1; // i=len>>1+1 WA; else i=len>>1; int k=0; for(; i<len; i++) { if(table[str[i]-'a']!=str[k]) continue; else { k++; bool ok=0; for(int j=i+1; j<len; j++) { if(table[str[j]-'a']!=str[k++]) { ok=1; break; } } if(!ok) break; } } for(int j=0; j<i; j++) printf("%c",str[j]); for(int j=0; j<i; j++) printf("%c",extable[str[j]-'a']+'a'); printf("\n"); } }
HDU 4300 Clairewd’s message,布布扣,bubuko.com
标签:字符串
原文地址:http://blog.csdn.net/dongshimou/article/details/37765159