<?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=2931_-_Parap</id>
	<title>2931 - Parap - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2931_-_Parap"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2931_-_Parap&amp;action=history"/>
	<updated>2026-05-01T06:48:31Z</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=2931_-_Parap&amp;diff=8892&amp;oldid=prev</id>
		<title>Andrada378: Pagină nouă: == Cerința == Se dau N numere naturale a1,a2…an  . O pereche (a[j],a[k]) cu 1≤j&lt;k≤N se numește pereche specială dacă are proprietatea că din a[j] și a[k] prin “lipire” se formează un număr X în care cifrele conținute apar de număr par de ori. De exemplu numerele 123 şi 21223 dacă se lipesc produc numărul 12321223 în care 1 apare de 2 ori, 2 apare de 4 ori și 3 apare de 2 ori.  Să se determine numărul perechilor speciale.  == Date de intrare == Pe p...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2931_-_Parap&amp;diff=8892&amp;oldid=prev"/>
		<updated>2024-01-03T16:47:23Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Se dau N numere naturale a1,a2…an  . O pereche (a[j],a[k]) cu 1≤j&amp;lt;k≤N se numește pereche specială dacă are proprietatea că din a[j] și a[k] prin “lipire” se formează un număr X în care cifrele conținute apar de număr par de ori. De exemplu numerele 123 şi 21223 dacă se lipesc produc numărul 12321223 în care 1 apare de 2 ori, 2 apare de 4 ori și 3 apare de 2 ori.  Să se determine numărul perechilor speciale.  == Date de intrare == Pe p...&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 dau N numere naturale a1,a2…an&lt;br /&gt;
&lt;br /&gt;
. O pereche (a[j],a[k]) cu 1≤j&amp;lt;k≤N se numește pereche specială dacă are proprietatea că din a[j] și a[k] prin “lipire” se formează un număr X în care cifrele conținute apar de număr par de ori. De exemplu numerele 123 şi 21223 dacă se lipesc produc numărul 12321223 în care 1 apare de 2 ori, 2 apare de 4 ori și 3 apare de 2 ori.&lt;br /&gt;
&lt;br /&gt;
Să se determine numărul perechilor speciale.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe primul rând al fișierului text parap.in se află numărul natural N reprezentând numărul de elemente ale șirului dat. Pe al doilea rând, separate prin câte un spațiu se află elementele șirului dat.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Pe primul rând în fișierul de ieșire parap.out se va scrie un număr natural reprezentând numărul perechilor speciale.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
&lt;br /&gt;
* 2 ≤ N ≤ 100.000&lt;br /&gt;
* 1 ≤ a[k] ≤ 1018&lt;br /&gt;
&lt;br /&gt;
== Exemplu: ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;parapin.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
4 1 13 5 42 2 1 2 112 212&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;parapout.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
6&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Perechile speciale sunt (1,1),(1,212),(2,2),(2,112),(1,212),(2,112).&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def validate_input(N, values):&lt;br /&gt;
    if not (2 &amp;lt;= N &amp;lt;= 100000):&lt;br /&gt;
        print(&amp;quot;Eroare: N trebuie să fie între 2 și 100000.&amp;quot;)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for val in values:&lt;br /&gt;
        if not (1 &amp;lt;= val &amp;lt;= 10**18):&lt;br /&gt;
            print(f&amp;quot;Eroare: Valoarea {val} nu este în intervalul permis.&amp;quot;)&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
def trans(x):&lt;br /&gt;
    w = [0] * 12&lt;br /&gt;
    sol = 0&lt;br /&gt;
    p = 1&lt;br /&gt;
&lt;br /&gt;
    while x != 0:&lt;br /&gt;
        w[x % 10] += 1&lt;br /&gt;
        x //= 10&lt;br /&gt;
&lt;br /&gt;
    for i in range(10):&lt;br /&gt;
        sol += p * (w[i] % 2)&lt;br /&gt;
        p *= 2&lt;br /&gt;
        w[i] = 0&lt;br /&gt;
&lt;br /&gt;
    return sol&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;parapin.txt&amp;quot;, &amp;quot;r&amp;quot;) as in_file, open(&amp;quot;parapout.txt&amp;quot;, &amp;quot;w&amp;quot;) as out_file:&lt;br /&gt;
        n = int(in_file.readline().strip())&lt;br /&gt;
        v = [0] * (n + 1)&lt;br /&gt;
        vf = [0] * 10002&lt;br /&gt;
        sol = 0&lt;br /&gt;
&lt;br /&gt;
        numbers = map(int, in_file.readline().split())&lt;br /&gt;
&lt;br /&gt;
        for i in range(1, n + 1):&lt;br /&gt;
            x = next(numbers)&lt;br /&gt;
            v[i] = trans(x)&lt;br /&gt;
            sol += vf[v[i]]&lt;br /&gt;
            vf[v[i]] += 1&lt;br /&gt;
&lt;br /&gt;
        out_file.write(str(sol))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrada378</name></author>
	</entry>
</feed>