<?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=1711_-_Siruri_concatenate</id>
	<title>1711 - Siruri concatenate - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1711_-_Siruri_concatenate"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1711_-_Siruri_concatenate&amp;action=history"/>
	<updated>2026-05-02T00:18:22Z</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=1711_-_Siruri_concatenate&amp;diff=8847&amp;oldid=prev</id>
		<title>Codrut Borcutean: Pagină nouă: == Cerinţa == Scrieţi un program care citeşte din fişierul de intrare mai multe şiruri de caractere formate din litere mici ale alfabetului englez şi determină câte dintre acestea sunt formate din două şiruri identice (cu lungimea cel puţin 1) concatenate. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;siruri_concatenatein.txt&#039;&#039;&#039; conține pe prima linie un număr natural nenul &#039;&#039;&#039;n&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii câte un şir format din litere mici ale alfabe...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1711_-_Siruri_concatenate&amp;diff=8847&amp;oldid=prev"/>
		<updated>2024-01-03T14:27:30Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Scrieţi un program care citeşte din fişierul de intrare mai multe şiruri de caractere formate din litere mici ale alfabetului englez şi determină câte dintre acestea sunt formate din două şiruri identice (cu lungimea cel puţin 1) concatenate. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;siruri_concatenatein.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie un număr natural nenul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte un şir format din litere mici ale alfabe...&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;
Scrieţi un program care citeşte din fişierul de intrare mai multe şiruri de caractere formate din litere mici ale alfabetului englez şi determină câte dintre acestea sunt formate din două şiruri identice (cu lungimea cel puţin 1) concatenate.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;siruri_concatenatein.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie un număr natural nenul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii câte un şir format din litere mici ale alfabetului englez.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;siruri_concatenateout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul de şiruri din fişierul de intrare care sunt formate din două şiruri identice concatenate.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 1000000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* şirurile au cel mult &amp;#039;&amp;#039;&amp;#039;5000&amp;#039;&amp;#039;&amp;#039; de caractere.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; siruri_concatenatein.txt&lt;br /&gt;
 5&lt;br /&gt;
 sirsir&lt;br /&gt;
 micropico&lt;br /&gt;
 pp&lt;br /&gt;
 vara&lt;br /&gt;
 nanonano&lt;br /&gt;
; siruri_concatenateout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; siruri_concatenatein.txt&lt;br /&gt;
 -5&lt;br /&gt;
 sirsir&lt;br /&gt;
 micropico&lt;br /&gt;
 pp&lt;br /&gt;
 vara&lt;br /&gt;
 nanonano&lt;br /&gt;
; siruri_concatenateout.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;
Cele 3 şiruri din fişier obţinute prin concatenarea a două şiruri identice sunt: &amp;#039;&amp;#039;&amp;#039;sirsir&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;sir&amp;#039;&amp;#039;&amp;#039;), &amp;#039;&amp;#039;&amp;#039;pp&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;) şi &amp;#039;&amp;#039;&amp;#039;nanonano&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;nano&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def is_concatenated(s):&lt;br /&gt;
    # Verifică dacă șirul s este format din două șiruri identice concatenate&lt;br /&gt;
    n = len(s)&lt;br /&gt;
    if n % 2 != 0:&lt;br /&gt;
        return False&lt;br /&gt;
    return s[:n//2] == s[n//2:]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;#039;siruri_concatenatein.txt&amp;#039;, &amp;#039;r&amp;#039;) as fin, open(&amp;#039;siruri_concatenateout.txt&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        n = int(fin.readline().strip())&lt;br /&gt;
        siruri = [fin.readline().strip() for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
        # Verifică dacă șirurile respectă restricțiile&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 1000000) or any(not s.islower() or len(s) &amp;gt; 5000 for s in siruri):&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ă șirurile care sunt formate din două șiruri identice concatenate&lt;br /&gt;
        nr = sum(is_concatenated(s) for s in siruri)&lt;br /&gt;
        fout.write(str(nr) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Codrut Borcutean</name></author>
	</entry>
</feed>