alice和bob正在悄悄地給對方發資訊,資訊都是由英文小寫字母組成的,他們約定,所有的字母都得經過乙個字母表進行變換,以防洩漏。另一方面john卻在監聽。
john發現,alice和bob通訊的時候,總是先傳送加密後的密文,然後緊接著傳送原文。
但是alice和bob似乎也意識到了似乎有人監聽,有時候會隨意中斷了他們的通訊。不過每次都是在傳送完密文之後才停止傳送的。也就是說,john截獲到的資訊是密文的全文以及前一部分原文。原文可能乙個字元都沒有,也可能原文的全文都被截獲。
現在john比較頭疼,他雖然已經得到了他們兩個人通訊的加密字母表,但是分不清楚什麼地方是密文和明文的分界線。你能幫他還原回完整的傳輸內容嗎?
如果有多種可能時,john認為那個最短的資訊才是原始的。
第一行是密碼**,包含26個小寫字母,依次表示a-z加密後的字母。
第二行是john截獲到的通訊資訊。
包含一行,表示還原後的通訊資訊。
abcdefghijklmnopqrstuvwxyz
abcdab
abcdabcd
通訊長度l<=100000。
這題可以直接暴力。由題目可知密文長度》=⌊l/
2⌋
\left \lfloor l/2\right \rfloor
⌊l/2
⌋,可以把前一半的密文先轉換回原文,然後再逐漸匹配,如果失配則立馬停止,繼續轉換,可證明暴力的時間複雜度能夠通過1s的時限。
tips:
正解因該是類似於kmp或hash之類的東西。
**如下
#include
using
namespace std;
int i,j,n,m,k,l,o,p;
char c[35]
,ch[35]
;char s[
100005
],ys[
100005];
intmain()
scanf
("%s"
,s+1);
n=strlen
(s+1);
for(i=
1;i<=
(n-1)/
2;i++
)for
(i;i<=n;i++)}
if(bz)
for(j=
1;j<=i;j++
)return0;
}}for(j=
1;j<=n;j++
)for
(j=1
;j<=n;j++
)}
碼風有點醜,請見諒。 293 翻轉遊戲
你和朋友玩乙個叫做 翻轉遊戲 的遊戲,遊戲規則 給定乙個只有 和 的字串。你和朋友輪流將 連續 的兩個 反轉成 當一方無法進行有效的翻轉時便意味著遊戲結束,則另一方獲勝。請你寫出乙個函式,來計算出第一次翻轉後,字串所有的可能狀態。示例 輸入 s 輸出 1.字串操作 class solution ve...
2 9 3 arcTo 畫圓角矩形
charset utf 8 arcto 畫圓角矩形title body canvas style head id canvas width 1000 height 600 canvas body var canvas document.getelementbyid canvas context ca...
MT 293 拐點處切線
2018浙江高考壓軸題 已知函式 f x sqrt ln x.2 若 a le 3 4 ln 2,證明 對於任意 k 0 直線 y kx a 與曲線 y f x 有唯一的公共點.分析 等價於 k dfrac ln x a 有唯一解.記 g x dfrac ln x a 則 g x dfrac 1 a...