<?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=4143_-_Ghicitoare</id>
	<title>4143 - Ghicitoare - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4143_-_Ghicitoare"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4143_-_Ghicitoare&amp;action=history"/>
	<updated>2026-05-01T08:48:43Z</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=4143_-_Ghicitoare&amp;diff=9464&amp;oldid=prev</id>
		<title>VanceaGabriel: Pagină nouă: = Cerința = Fie un număr natural nenul &lt;code&gt;n&lt;/code&gt;, cunoscut. RAU-Gigel alege un număr oarecare din intervalul închis &lt;code&gt;[1,n]&lt;/code&gt;, fie acesta &lt;code&gt;x&lt;/code&gt;. Apoi calculează “suma XOR” &lt;code&gt;S = 1 ^ 2 ^ ... ^ (x-2)  ^ (x-1) ^ (x+1) ^ (x+2) ^ ... ^ n&lt;/code&gt; pe care v-o comunică. Puteți să-l ghiciți pe &lt;code&gt;x&lt;/code&gt; ? RAU-Gigel nu prea are răbdare, el vrea repede un răspuns de la voi.  Am notat cu &lt;code&gt;^&lt;/code&gt; operația &lt;code&gt;XOR&lt;/code&gt; (operatorul d...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4143_-_Ghicitoare&amp;diff=9464&amp;oldid=prev"/>
		<updated>2024-01-13T19:39:00Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: = Cerința = Fie un număr natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, cunoscut. RAU-Gigel alege un număr oarecare din intervalul închis &amp;lt;code&amp;gt;[1,n]&amp;lt;/code&amp;gt;, fie acesta &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Apoi calculează “suma XOR” &amp;lt;code&amp;gt;S = 1 ^ 2 ^ ... ^ (x-2)  ^ (x-1) ^ (x+1) ^ (x+2) ^ ... ^ n&amp;lt;/code&amp;gt; pe care v-o comunică. Puteți să-l ghiciți pe &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ? RAU-Gigel nu prea are răbdare, el vrea repede un răspuns de la voi.  Am notat cu &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; operația &amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt; (operatorul d...&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;
Fie un număr natural nenul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, cunoscut. RAU-Gigel alege un număr oarecare din intervalul închis &amp;lt;code&amp;gt;[1,n]&amp;lt;/code&amp;gt;, fie acesta &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;. Apoi calculează “suma XOR” &amp;lt;code&amp;gt;S = 1 ^ 2 ^ ... ^ (x-2)  ^ (x-1) ^ (x+1) ^ (x+2) ^ ... ^ n&amp;lt;/code&amp;gt; pe care v-o comunică. Puteți să-l ghiciți pe &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ? RAU-Gigel nu prea are răbdare, el vrea repede un răspuns de la voi.&lt;br /&gt;
&lt;br /&gt;
Am notat cu &amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt; operația &amp;lt;code&amp;gt;XOR&amp;lt;/code&amp;gt; (operatorul de disjuncție exclusivă).&lt;br /&gt;
&lt;br /&gt;
Ca să fie sigur că nu nimeriți din întâmplare răspunsul, RAU-Gigel vă testează de mai multe ori.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;ghicitoare.in&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; reprezentând numărul de teste / ghicitori pe care RAU-Gigel vi le propune, apoi &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; linii care conțin perechi de forma &amp;lt;code&amp;gt;n S&amp;lt;/code&amp;gt;, separate printr-un spațiu, cu semnificația de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;ghicitoare.out&amp;lt;/code&amp;gt; va conține &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; rânduri, cu răspunsurile &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, în ordinea solicitării, câte unul pe linie, la ghicitorile lui RAU-Gigel.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ T ≤ 10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ n ≤ 1.000.000.000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0 ≤ S ≤ 1.000.000.000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ x ≤ n&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru teste în valoare de &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; de puncte: &amp;lt;code&amp;gt;T = 2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n  ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pentru teste în valoare de alte &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte: &amp;lt;code&amp;gt;n  ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;ghicitoare.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2&lt;br /&gt;
 5 2&lt;br /&gt;
 10 14&lt;br /&gt;
&amp;lt;code&amp;gt;ghicitoare.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3&lt;br /&gt;
 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
RAU-Gigel vă propune &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; ghicitori.&lt;br /&gt;
&lt;br /&gt;
La prima ghicitoare avem: &amp;lt;code&amp;gt;n = 5, S = 2&amp;lt;/code&amp;gt;. Numărul căutat este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Intr-adevăr,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;S = 1 ^ 2 ^ 4 ^ 5 = |001| ^ |010| ^ |100| ^ |101| = |010| = 2&amp;lt;/code&amp;gt; (am notat cu &amp;lt;code&amp;gt;|a|&amp;lt;/code&amp;gt; reprezentarea binară a lui &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
La a doua ghicitoare avem: &amp;lt;code&amp;gt;n = 10, S = 14&amp;lt;/code&amp;gt;. Numărul căutat este &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;. Intr-adevăr,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;S = 1 ^ 2 ^ 3 ^ 4 ^ 6 ^ 7 ^ 8 ^ 9 ^ 10&amp;lt;/code&amp;gt; are valoarea &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt;.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschide fisierul de intrare si iesire&lt;br /&gt;
    fin = open(&amp;quot;ghicitoare.in&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fout = open(&amp;quot;ghicitoare.out&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Citim numarul de teste &amp;#039;numar_t&amp;#039; din prima linie a fisierului de intrare.&lt;br /&gt;
    numar_t = int(fin.readline())&lt;br /&gt;
&lt;br /&gt;
    # Parcurge fiecare test.&lt;br /&gt;
    for i in range(numar_t):&lt;br /&gt;
        # Citim linia de input și extragem cele două valori &amp;#039;numar_n&amp;#039; și &amp;#039;numar_s&amp;#039;.&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        numar_n, numar_s = int(line[0]), int(line[1])&lt;br /&gt;
&lt;br /&gt;
        # Calculam xorrange pentru numar_n și adaugă rezultatul la numar_s.&lt;br /&gt;
        # Scriem rezultatul în fisierul de iesire.&lt;br /&gt;
        fout.write(str(xorrange(numar_n) ^ numar_s) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # Inchidem fisierele de intrare si iesire.&lt;br /&gt;
    fin.close()&lt;br /&gt;
    fout.close()&lt;br /&gt;
&lt;br /&gt;
def xorrange(numar_n):&lt;br /&gt;
    # Folosim // pentru impartire la intreg in Python.&lt;br /&gt;
    if (numar_n + 1) // 2 % 2 == 0:&lt;br /&gt;
        rezultat = 0&lt;br /&gt;
    else:&lt;br /&gt;
        rezultat = 1&lt;br /&gt;
&lt;br /&gt;
    # Initializam i la 4 pentru a evita bucla infinita.&lt;br /&gt;
    i = 4&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem elementele în șir până la numar_n.&lt;br /&gt;
    while (i &amp;gt;&amp;gt; 1) &amp;lt;= numar_n:&lt;br /&gt;
        rest_impartire = numar_n % i&lt;br /&gt;
&lt;br /&gt;
        # Verificam daca restul impartirii este mai mic decat i / 2 si aplicam operatii.&lt;br /&gt;
        if rest_impartire &amp;lt; (i &amp;gt;&amp;gt; 1):&lt;br /&gt;
            pass&lt;br /&gt;
        elif rest_impartire == 1 or rest_impartire % 2 == 0:&lt;br /&gt;
            rezultat |= (i &amp;gt;&amp;gt; 1)&lt;br /&gt;
&lt;br /&gt;
        # Dublam valoarea lui i pentru a continua iteratia.&lt;br /&gt;
        i &amp;lt;&amp;lt;= 1&lt;br /&gt;
&lt;br /&gt;
    return rezultat&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>VanceaGabriel</name></author>
	</entry>
</feed>