<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3142_-_Polybius</id>
	<title>3142 - Polybius - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3142_-_Polybius"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3142_-_Polybius&amp;action=history"/>
	<updated>2026-05-01T04:32:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3142_-_Polybius&amp;diff=8383&amp;oldid=prev</id>
		<title>Raul: Pagină nouă:  = Polybius = Cifrul Polybius este un cifru folosit de Grecii Antici care are la bază un tabel de &lt;code&gt;5&lt;/code&gt; linii și &lt;code&gt;5&lt;/code&gt; coloane pentru a cripta sau decripta un șir de caractere. Pentru criptare, luăm fiecare caracter din șir și afișăm linia și coloana din tabel unde se află caracterul. Pentru decriptare afișăm caracterul care se află în tabel la linia și coloana dată  Împreună cu șirul &lt;code&gt;INF&lt;/code&gt;, afișăm &lt;code&gt;243321&lt;/code&gt; deoarece...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3142_-_Polybius&amp;diff=8383&amp;oldid=prev"/>
		<updated>2023-12-26T15:11:43Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă:  = Polybius = Cifrul Polybius este un cifru folosit de Grecii Antici care are la bază un tabel de &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; coloane pentru a cripta sau decripta un șir de caractere. Pentru criptare, luăm fiecare caracter din șir și afișăm linia și coloana din tabel unde se află caracterul. Pentru decriptare afișăm caracterul care se află în tabel la linia și coloana dată  Împreună cu șirul &amp;lt;code&amp;gt;INF&amp;lt;/code&amp;gt;, afișăm &amp;lt;code&amp;gt;243321&amp;lt;/code&amp;gt; deoarece...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Polybius =&lt;br /&gt;
Cifrul Polybius este un cifru folosit de Grecii Antici care are la bază un tabel de &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; coloane pentru a cripta sau decripta un șir de caractere. Pentru criptare, luăm fiecare caracter din șir și afișăm linia și coloana din tabel unde se află caracterul. Pentru decriptare afișăm caracterul care se află în tabel la linia și coloana dată&lt;br /&gt;
&lt;br /&gt;
Împreună cu șirul &amp;lt;code&amp;gt;INF&amp;lt;/code&amp;gt;, afișăm &amp;lt;code&amp;gt;243321&amp;lt;/code&amp;gt; deoarece litera &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt; se află pe poziția &amp;lt;code&amp;gt;(2, 4)&amp;lt;/code&amp;gt;, litera &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; se află pe poziția &amp;lt;code&amp;gt;(3, 3)&amp;lt;/code&amp;gt; iar litera &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; se află pe poziția &amp;lt;code&amp;gt;(2, 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Se dă un număr &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, un șir de caractere &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; de &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt; de caractere corespunzător tabelului și un șir de caractere &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt;. Să se determine:&lt;br /&gt;
&lt;br /&gt;
1. Pentru &amp;lt;code&amp;gt;p = 1&amp;lt;/code&amp;gt;, să se cripteze șirul &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt;, format doar din litere mari, folosind tabelul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2. Pentru &amp;lt;code&amp;gt;p = 2&amp;lt;/code&amp;gt;, să se decripteze șirul &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt;, format doar din cifre, folosind tabelul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;polybius.in&amp;lt;/code&amp;gt; conține pe prima linie numărul &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;, pe a doua linie șirul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; format din &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt; de caractere, reprezentând toate elementele tabelului, de la stânga la dreapta și de sus în jos. A treia linie șirul de litere &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; care trebuie criptat, dacă &amp;lt;code&amp;gt;p=1&amp;lt;/code&amp;gt;, respectiv șirul de cifre care trebuie decriptat, dacă &amp;lt;code&amp;gt;p=2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;p = 1&amp;lt;/code&amp;gt;, fișierul de ieșire &amp;lt;code&amp;gt;polybius.out&amp;lt;/code&amp;gt; va conține pe prima linie rezultatul criptării. Cifrele se afișează fără spațiu între ele.&lt;br /&gt;
&lt;br /&gt;
Pentru &amp;lt;code&amp;gt;p = 2&amp;lt;/code&amp;gt;, fișierul de ieșire &amp;lt;code&amp;gt;polybius.out&amp;lt;/code&amp;gt; va conține pe prima linie rezultatul decriptării.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ p ≤ 2&amp;lt;/code&amp;gt;&lt;br /&gt;
* lungimea șirului &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; este de &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt; de caractere&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤&amp;lt;/code&amp;gt; lungimea șirului de litere &amp;lt;code&amp;gt;s ≤ 500.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Se garantează că toate caracterele din &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; sunt incluse în șirul &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; și caracterele din &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; sunt distincte două câte două.&lt;br /&gt;
* O literă din alfabet va lipsi întotdeauna din tabel, fiind un tabel &amp;lt;code&amp;gt;5x5&amp;lt;/code&amp;gt; iar alfabetul are &amp;lt;code&amp;gt;26&amp;lt;/code&amp;gt; de caractere.&lt;br /&gt;
&lt;br /&gt;
= Exemplul 1: =&lt;br /&gt;
&amp;lt;code&amp;gt;polybius.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 ABCDEFGHIKLMNOPQRSTUVWXYZ &lt;br /&gt;
 ANAAREMERE&lt;br /&gt;
&amp;lt;code&amp;gt;polybius.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 11331111421532154215&lt;br /&gt;
&lt;br /&gt;
= Exemplul 2: =&lt;br /&gt;
&amp;lt;code&amp;gt;polybius.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 ABCDEFGHIKLMNOPQRSTUVWXYZ &lt;br /&gt;
 11331111421532154215&lt;br /&gt;
&amp;lt;code&amp;gt;polybius.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 ANAAREMERE&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
cer = int(input())&lt;br /&gt;
a = input().strip()&lt;br /&gt;
k = 0&lt;br /&gt;
mat = [[&amp;#039;&amp;#039; for _ in range(6)] for _ in range(6)]&lt;br /&gt;
for i in range(1, 6):&lt;br /&gt;
    for j in range(1, 6):&lt;br /&gt;
        while a[k] == &amp;#039; &amp;#039;:&lt;br /&gt;
            k += 1&lt;br /&gt;
        mat[i][j] = a[k]&lt;br /&gt;
        k += 1&lt;br /&gt;
&lt;br /&gt;
sys.stdin.readline()&lt;br /&gt;
X = [0] * 30&lt;br /&gt;
if cer == 2:&lt;br /&gt;
    while True:&lt;br /&gt;
        line = sys.stdin.readline().strip()&lt;br /&gt;
        if not line:&lt;br /&gt;
            break&lt;br /&gt;
        a, b = line.split()&lt;br /&gt;
        print(mat[int(a)][int(b)], end=&amp;#039;&amp;#039;)&lt;br /&gt;
else:&lt;br /&gt;
    while True:&lt;br /&gt;
        line = sys.stdin.readline().strip()&lt;br /&gt;
        if not line:&lt;br /&gt;
            break&lt;br /&gt;
        ch = line[0]&lt;br /&gt;
        print(X[ord(ch) - ord(&amp;#039;A&amp;#039;)], end=&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>