<?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=3492_-_PalPal</id>
	<title>3492 - PalPal - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3492_-_PalPal"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3492_-_PalPal&amp;action=history"/>
	<updated>2026-05-02T06:58:08Z</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=3492_-_PalPal&amp;diff=8864&amp;oldid=prev</id>
		<title>Codrut Borcutean: Pagină nouă: == Cerinţa == Se dă un șir &#039;&#039;&#039;s&#039;&#039;&#039; care conține litere mici ale alfabetului englez, urmat de un număr natural &#039;&#039;&#039;k&#039;&#039;&#039;. Să se afișeze câte subsecvențe ale șirului &#039;&#039;&#039;s&#039;&#039;&#039; de lungime &#039;&#039;&#039;1&#039;&#039;&#039;, &#039;&#039;&#039;2&#039;&#039;&#039;, … &#039;&#039;&#039;k&#039;&#039;&#039; sunt palindromuri. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;palpalin.txt&#039;&#039;&#039; conține pe prima linie un șir &#039;&#039;&#039;s&#039;&#039;&#039; și pe următoarea linie un număr natural &#039;&#039;&#039;k&#039;&#039;&#039;. == Date de ieșire == Fișierul de ieșire &#039;&#039;&#039;palpalout.txt&#039;&#039;&#039; va conține &#039;&#039;&#039;k&#039;&#039;&#039; lin...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3492_-_PalPal&amp;diff=8864&amp;oldid=prev"/>
		<updated>2024-01-03T15:19:55Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se dă un șir &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; care conține litere mici ale alfabetului englez, urmat de un număr natural &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;. Să se afișeze câte subsecvențe ale șirului &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; de lungime &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, … &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; sunt palindromuri. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;palpalin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie un șir &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; și pe următoarea linie un număr natural &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;. == Date de ieșire == Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;palpalout.txt&amp;#039;&amp;#039;&amp;#039; va conține &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; lin...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dă un șir &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; care conține litere mici ale alfabetului englez, urmat de un număr natural &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;. Să se afișeze câte subsecvențe ale șirului &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; de lungime &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, … &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; sunt palindromuri.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;palpalin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie un șir &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; și pe următoarea linie un număr natural &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;palpalout.txt&amp;#039;&amp;#039;&amp;#039; va conține &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; linii. Pe linia &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;1 ≤ i ≤ k&amp;#039;&amp;#039;&amp;#039;) se va găsi numărul de subsecvențe de &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; caractere care sunt palindromuri.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; k &amp;amp;les; 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* șirul &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; are maxim &amp;#039;&amp;#039;&amp;#039;20000&amp;#039;&amp;#039;&amp;#039; de caractere&lt;br /&gt;
* Prin subsecvență a unui șir de caractere se înțelege o succesiune de unul sau mai multe caractere din șir aflate pe poziții consecutive.&lt;br /&gt;
* Un șir de caractere este palindrom dacă se citește la fel de la stânga la dreapta și de la dreapta la stânga.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; palpalin.txt&amp;#039;&lt;br /&gt;
 eaaebeadaebcc&lt;br /&gt;
 5&lt;br /&gt;
; palpalout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 13&lt;br /&gt;
 2&lt;br /&gt;
 2&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; palpalin.txt&amp;#039;&lt;br /&gt;
 eaaebeadaebcc&lt;br /&gt;
 -5&lt;br /&gt;
; palpalout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Subsecvențe palindrom de lungime 1: &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;d&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;e&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Subsecvențe palindrom de lungime 2: &amp;#039;&amp;#039;&amp;#039;aa&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;cc&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Subsecvențe palindrom de lungime 3: &amp;#039;&amp;#039;&amp;#039;ebe&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;ada&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Subsecvențe palindrom de lungime 4: &amp;#039;&amp;#039;&amp;#039;eaae&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Subsecvențe palindrom de lungime 5: &amp;#039;&amp;#039;&amp;#039;aebea&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;eadae&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def is_palindrome(s):&lt;br /&gt;
&lt;br /&gt;
    #Verifică dacă un șir de caractere este palindrom.&lt;br /&gt;
&lt;br /&gt;
    return s == s[::-1]&lt;br /&gt;
&lt;br /&gt;
def count_palindromic_subsequences(s, k):&lt;br /&gt;
&lt;br /&gt;
    #Numără subsecvențele palindromice de lungime 1, 2, ..., k ale unui șir.&lt;br /&gt;
&lt;br /&gt;
    counts = [0] * k&lt;br /&gt;
    for length in range(1, k + 1):&lt;br /&gt;
        for i in range(len(s) - length + 1):&lt;br /&gt;
            if is_palindrome(s[i:i+length]):&lt;br /&gt;
                counts[length-1] += 1&lt;br /&gt;
    return counts&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;#039;palpalin.txt&amp;#039;, &amp;#039;r&amp;#039;) as fin, open(&amp;#039;palpalout.txt&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        s = fin.readline().strip()&lt;br /&gt;
        k = int(fin.readline().strip())&lt;br /&gt;
&lt;br /&gt;
        # Verifică dacă datele de intrare respectă restricțiile&lt;br /&gt;
        if len(s) &amp;gt; 20000 or k &amp;lt; 1 or k &amp;gt; 1000:&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # Numără subsecvențele palindromice și scrie rezultatele în fișierul de ieșire&lt;br /&gt;
        counts = count_palindromic_subsequences(s, k)&lt;br /&gt;
        for count in counts:&lt;br /&gt;
            fout.write(str(count) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Codrut Borcutean</name></author>
	</entry>
</feed>