Cerința
Un text s de lungime 2•n, unde n este un număr natural par, este codificat în felul următor: se construieşte o matrice pătratică de dimensiune n•n în care primele n caractere ale lui s se găsesc în ordine, de sus în jos, pe diagonala secundară a matricei, iar următoarele n caractere, în ordine, de sus în jos, pe diagonala principală. Restul caracterelor matricei sunt generate aleator. Matricea este transformată într-un şir de caractere cod(s) prin concatenarea şirurilor de caractere reprezentate de liniile acesteia (în ordine, de sus în jos). caractere (litere mari sau mici ale alfabetului englez), reprezentând cod(s).
Date de ieșire
Fișierul de ieșire decodificare.out va conține pe prima linie şirul decodificat.
Restricții și precizări
1 ≤ n ≤ 3000- Recomandare: pentru tablourile de dimensiuni mari, folosiţi variabile globale.
Exemplu:
decodificare.in
8 TPQAREDSXMRYIUVE
decodificare.out
ADMITERE
Explicație
Matricea de codificare este
T P Q A R E D S X M R Y I U V E
#include <bits/stdc++.h>
using namespace std;
ifstream cin("decodificare.in");
ofstream cout("decodificare.out");
int a[1501][1501];
int main()
{
int n;
char c;
cin >> n;
for(int i = 1 ; i <= n/2 ; ++i)
for(int j = 1 ; j <= n/2 ; ++j)
cin >> c , a[i][j]=c;
for(int i = 1 ; i <= n/2 ; ++i)
for(int j = 1 ; j <= n/2 ; ++j)
if(i+j-1==n/2) cout << (char)a[i][j];
for(int i = 1 ; i <= n/2 ; ++i)
for(int j = 1 ; j <= n/2 ; ++j)
if(i == j) cout << (char)a[i][j];
return 0;
}