OpenJudge百鍊習題解答(C++ )--題4112:情報破譯-Cryptanalysis
題:
- 總時間限制:1000ms 記憶體限制:65536kB
- 描述
-
A國和B國正在進行一場戰爭。A國通過間諜知道B國的情報加密規則為:
1. 僅對字母加密,其他符號保留(如空格,逗號等)
2. 對第i個單詞(i從1開始)的加密方法是把第i個單詞反轉(如abc變成cba),然後對單詞內的每個字母採用經典的Caesar加密法,迴圈後移i個字母。例如:第5個單詞的加密表如下所示:
密碼字母:A B C D E F G H I J K L M N O P Q R S T U VW X Y Z
原文字母:V W X Y Z A B C D E F G H I J K L M N O P QR S T U
3. 單詞的定義是:任何一串極大的連續字母串。
比如,樣例輸出第三行,第二個單詞為ba,反轉後為ab,a後移2個單詞變成c,b後移兩個單詞變成d,故該單詞加密後為cd(見樣例輸入第三行)。
現在A國又截獲了一些B國的情報密文。請你幫A國破譯出情報的內容。
- 輸入
- 一共有不超過int範圍行,每行為一個字串(int範圍)。注意,每行是可以以空格開頭的。
- 輸出
- 情報破譯後得到的內容。每條情報對應輸出一行。
- 樣例輸入:
- 樣例輸出:
解:
#include<iostream> #include<stdio.h> #include<string> using namespace std; void Tra(string A); char Cc(int n,char c); int main() { int Line=0; int count=0; int Len; string A[65536]; /* while(true) { count++; Len=0; getline(cin,A[count-1]); while(A[count-1][Len++]); if(A[count-1][Len-2]!='.') { break; } } for(int i=0;i<count;i++) { Tra(A[i]); } */ for(int i=0;i<65536;i++) { count=i; getline(cin,A[count]); Tra(A[count]); } return 0; } void Tra(string A) { int F=-1; int L=-1; int InWord=0; char Temp; int Count=0; int i=0; while(A[i]) { if(InWord==0&& ( ( A[i]>=97&&A[i]<=122) || (A[i]>=65&&A[i]<=90) ) ) { InWord=1; Count++; F=i; } if(InWord==1&&( A[i]>122 || A[i]<65 || (A[i]>90&&A[i]<97) ) ) {InWord=0; L=i; } if(InWord==1&&(A[i]<=122&&A[i]>=97||A[i]>=65&&A[i]<=90)&&A[i+1]==0) { InWord=0; L=i+1; } if(F!=-1&&L!=-1) { for(int h=0;h<(L-F)/2;h++) { Temp=A[F+h]; A[F+h]=A[L-h-1]; A[L-h-1]=Temp; } for(int h=0;h<(L-F);h++) { A[F+h]=Cc(Count,A[F+h]); } F=-1; L=-1; } i++; } cout<<A<<endl; } char Cc(int n,char c) { if(c>=97&&c<=122) { if(c-n>=97) { return c-n; } else { return 'z'-(96+n-c); } } if(c>=65&&c<=90) { if(c-n>=65) { return c-n; } else { return 'Z'-(64+n-c); } } }
相關推薦
OpenJudge百鍊習題解答(C++ )--題4112:情報破譯-Cryptanalysis
題: 總時間限制:1000ms 記憶體限制:65536kB描述 A國和B國正在進行一場戰爭。A國通過間諜知道B國的情報加密規則為: 1. 僅對字母加密,其他符號保留(如空格,逗號等)
OpenJudge百鍊習題解答(C++)--題4085:陣列去重排序
題: 總時間限制: 1000ms 記憶體限制: 1000kB 描述 小吉是銀行的會計師,在處理銀行帳目的時候,遇到了一些問題。有一系列整數,其中含有重複的整數,需要去掉重複後,排序輸出,你能幫助小
OpenJudge百鍊習題解答(C++)--題2690:首字母大寫
題: 總時間限制: 1000ms 記憶體限制: 65536kB 描述對一個字串中的所有單詞,如果單詞的首字母不是大寫字母,則把單詞的首字母變成大寫字母。在字串中,單詞之間通過空白符分隔,空白符包括:
OpenJudge百鍊習題解答(C++)--題4072:判斷多個點是否在同一直線
題: 總時間限制: 1000ms 記憶體限制: 65536kB 描述 有N(1<=n<=100)< span="">個互不重合的點,並給出它們的座標(xi,yi),問這些點
OpenJudge百鍊習題解答(C++)--題2704:競賽評分
題: 總時間限制: 1000ms 記憶體限制: 65536kB 描述現舉行一次小競賽,參賽的3支隊伍,編號為1,2,3.每支佇列輪流回答問題,如果回答正確,加10分;回答錯誤,扣10分;放棄回答不得
OpenJudge百鍊習題解答(C++)--題4110:聖誕老人的禮物-Santa Clau’s Gifts
題: 總時間限制: 1000ms 記憶體限制: 65536kB 描述 聖誕節來臨了,在城市A中聖誕老人準備分發糖果,現在有多箱不同的糖果,每箱糖果有自己的價值和重量,每箱糖果都可以拆分成任意散裝組
OpenJudge百鍊習題解答(C++)--題4045:與3和5無關的數
題: 總時間限制: 1000ms 記憶體限制: 65536kB 描述 一個正整數,如果它能被x整除,或者它的十進位制表示法中某個位數上的數字為x,則稱其為與x相關的數.現求所有小於等於n(n<
OpenJudge百鍊習題解答(C++)--題3142:球彈跳高度的計算
題: 總時間限制: 1000ms 記憶體限制: 65536kB 描述 一球從某一高度落下(整數,單位米),每次落地後反跳回原來高度的一半,再落下。 程式設計計算氣球在第10次落地時,共經過多少米?
OpenJudge百煉習題解答(C++)--題4074:積水量
tom size alt popu function 滲透 urn dsm img 題: 總時間限制: 1000ms 內存限制:65536kB 描寫敘述 凹凸不平的地面每當下雨的時候總會積水。如果地面是一維的。每一塊寬度都為1,高度是非負整數。
OpenJudge百煉習題解答(C++)--題4010:2011
輸入 ati and splay blue margin display 推薦 bstr 題: 總時間限制: 1000ms 內存限制: 65536kB 描寫敘述已知長度最大為200位的正整數n。請求出2011^n的後四位。 輸入第一行為一個正整
《C語言程式設計(第二版新版)》第一章習題解答(部分)
1-20 //My solution:先將輸入字串儲存至陣列,將其detab後存入另一陣列,然後列印該陣列 #include <stdio.h> #define MAXLINE 100 #define TABSIZE 8 #define TAB '\t' in
2017百度軟研(C++)
揮手 查找 翻轉 順序 win 數據庫 編程 指針 查找進程 問了很多,不過很多也都沒有問到,感覺有點偏,很深入的東西,越問越虛。第一次實習面試從百度開始,也從百度結束吧。看得見的差距,不想將就,所以還是拿最後一次機會去嘗試。win or go home, 所以雖然心態又一
full-speed-python習題解答(九)--非同步程式設計(Asynchronous programming)
Exercises with asyncio 1. Implement an asynchronous coroutine function to add two variables and sleep for the duration of the sum. Use the as
full-speed-python習題解答(八)-- Coroutines
Python協同(coroutines)類似於生成器,會使用yield關鍵字,但它不是生成資料,而是通常消費(consume)資料。 Exercise with coroutines 1. Create a coroutine named “square” that prints the s
full-speed-python習題解答(七)--生成器
迭代器(iterator)是經常與for迴圈一起使用的可迭代物件(iterable)。Python中的生成器(generator)是實現迭代器的一種方便方法。生成器不是class,而是使用yield關鍵字作返回值的函式。 1. Implement a gene
full-speed-python習題解答(六)--迭代器
1.Implement an iterator class to return the square of all numbers from “a” to “b”. class all_number(object): def __init__(self,a,b): sel
OpenJudge百鍊-2950-摘花生-C語言
描述: 魯賓遜先生有一隻寵物猴,名叫多多。這天,他們兩個正沿著鄉間小路散步,突然發現路邊的告示牌上貼著一張小小的紙條:“歡迎免費品嚐我種的花生!——熊字”。 魯賓遜先生和多多都很開心,因為花生正是他們
開源物聯網框架ServerSuperIO 3.0正式釋出(C#),跨平臺:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套裝置驅動跨平臺掛載,附:開發套件和教程。
3.0版本主要更新內容: 1.增加跨平臺能力:Win&Win10 Iot&Ubuntu&Ubuntu Mate 2.統一裝置驅動介面:可以一套裝置驅動,跨平臺掛載執行,降低人力成本,提高開發效率。 3.增加二次開發套件:支援控制檯和UI介面兩種方式。 4.增加配置工具:
WinForm(C#)第一篇:登入頁面實現+SQL Server資料庫連線方式
前言 最近見習,要完成的一個作業。主要是WinForm(C#)開發,本想參考網上的Demo,但一直沒找到合適入門的,因此打算自己記錄一下整個開發過程,給予隊友和後面學習的人一些方便。 當然,我也是第一次學習WinForm,技術不夠成熟,程式碼也可能不夠
C++ Primer 第五版第六章習題答案(下)
書籍版本:2019年9月第一版;王剛 楊巨峰譯;電子工業出版社 編譯器 : win10 && VS2015 這一篇從6.3節開始,也就是30題開始 6.30 報的是錯誤#1,沒有正確的返回值 6.31 返回區域性引用時無效,返回區域性定義的常量引