Openjudge 1 8 25 螺旋加密

2021-07-27 18:45:14 字數 1216 閱讀 7980

描述chip和dale發明了一種文字資訊加密技術。他們事先秘密約定好矩陣的行數和列數。接著,將字元按如下方式編碼:

1. 所有文字只包含大寫字母和空格。

2. 每個字元均賦予乙個數值:空格=0,a=1,b=2,……,y=25,z=26。

按照下圖所示的方式,將每個字元對應數值的5位二進位制數依次填入矩陣。最後用0將矩陣補充完整。例如,對於資訊「acm」,行列數均為4時,矩陣將被填充為:

將矩陣中的數字按行連起來形成數字串,完成加密。例子中的資訊最終會被加密為:0000110100101100。

輸入一行。首先是兩個整數r(1≤r≤20)和c(1≤c≤20),表示行數和列數。之後是乙個只包含大寫字母和空格的字串。字串的長度≤(r*c)/5。r和c之間以及c和字串之間均用單個空格隔開。

輸出一行,為加密後的二進位制串。注意你可能需要用0將矩陣補充完整。

題目分析

本題目需要轉換二進位制,在c++中可以用自定義函式轉換,暫存於乙個陣列中,由於二進位制只有「1」和「0」,所以可以使用「bool」陣列儲存(本樣例中是整型陣列)。之後我們可以發現填入時,有4種填入方式:1.向右;2.向下;3.向左;4.向上。我們可以定義乙個整型引數「lx」,有四個值,分別代表一種填入方式,用「switch」分類討論。題目中要求剩餘部分用「0」補充完整,但不用實際操作,在陣列定義時的初始化即可完成。注意填入的順序。

程式樣例

#include#includeint ch[450],len,sch[23][23]; //分別為轉換後的2進製串,2進製串的位數,填入後的二維陣列

bool chs[23][23]; //輔助二維陣列

void ten_two(char); //2進製轉換的函式

void strue(int,int); //輔助二維陣列的初始化函式

int main()

; scanf("%d%d%*c",&r,&c);

strue(r,c);

gets(s);

for(int i=0;i=0;js--,len++)

ch[len]=x[js];

}void strue(int r,int c)

{ for(int i=0;i

careercup 高等難度 18 2

18.2 編寫乙個方法,洗一副牌。要求做到完美洗牌,換言之,這幅牌52!種排列組合出現的概率相同。假設給定乙個完美的隨機發生器。解法 假定有個陣列,含有n個元素,類似如下 1 2 3 4 5 利用簡單構造法,我們不妨先問自己,假定有個方法shuffle 對n 1個元素有效,我們可以用它來打亂n個元素...

18 2D轉換模組

transform屬性 作用 2d的模組轉換 取值 transform rotate 值deg 旋轉 旋轉預設以自己的中心的為旋轉點 transform translate 水平方向px,垂直方向px 平移元素 transform translate z x y 偏移的量px transform s...

182day(選單建立)

2018年4月10日 連續182天 內容 jmenu string label 用給定標籤構造乙個選單。jmenuitem add jmenuitem item 新增乙個選單項 或乙個選單 jmenuitem add string label 用給定標籤將乙個選單項新增到選單中,並返回這個選單項。j...