Test Message

c356: Justin 愛加密

內容

2018 年  4 月 1 日成功高中大門突然多了一顆石頭,但這次並不是學校出錢所買,而是從遙遠的火星飛來的神秘石頭。神秘的石頭上也寫了一串文字:

『 HDNOWEEIOWWELWDDWWLOPODWO 』,NASA 也不知道其中的含義。Justin 精通各種加密技巧,看一眼就知道其中真正的含義,也就是 『HELLO』。

只要經過 T ( 5 ) 的排列,再將對角線的字即為原文~

HDNOW

EEIOW

WELWD

DWWLO

PODWO

就成了 ->『 HELLO 』。

所以 N 也能代表秘文長度,現在給你一串原本字串及 N ,請你輸出其中真正想表達的字串。

記憶體只有 16 MB !


輸入

單筆輸入

第一行有一個整數 N 代表秘文長度 (1 <= N <= 5000)

第二行一個字串,代表石頭上出現的文字 ,長度為 N * N 。

5
HDNOWEEIOWWELWDDWWLOPODWO

輸出

輸出只有一行。

請輸出真正想表達的字串。

( 必為英文字母 A ~ Z )

HELLO


解題思路

觀察密碼字元的出現頻率,會發現他是每隔 n 個字就會出現一次,所以每次讀取資料時都讀 n+1 個字元,這時候毒入的字串首個字元即為密碼字元,將他們收集起來輸出即可。

注意!C 在讀入字串後都會在字串的後面加上'\0'表示字串結束,所以每次讀入時需用 n+2 的大小保留空位給'\0'。


完整程式碼

AC (11ms, 112KB)
#include <stdio.h>
#define MAX 5005

char s[MAX], ans[MAX];

int main()
{
int n, np;
scanf(" %d", &n);
getchar();
np = n + 2;
for (int i = 0; i < n; i++)
{
fgets(s, np, stdin);
ans[i] = s[0];
}
ans[n] = 0;
puts(ans);
return 0;
}