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; }