<?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=1950_-_PXP</id>
	<title>1950 - PXP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1950_-_PXP"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1950_-_PXP&amp;action=history"/>
	<updated>2026-05-01T06:48:17Z</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=1950_-_PXP&amp;diff=9956&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Cerinţa == Se dă un şir format din &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale nenule. Spunem că un număr e fericit dacă se poate scrie ca suma pătratelor a două numere naturale. Notăm cu &#039;&#039;&#039;K&#039;&#039;&#039; numărul numerelor fericite din şir şi cu &#039;&#039;&#039;P&#039;&#039;&#039; produsul acestora. Aflaţi numărul &#039;&#039;&#039;K&#039;&#039;&#039; precum şi două numere naturale care au suma pătratelor egală cu &#039;&#039;&#039;PE&#039;&#039;&#039;, unde &#039;&#039;&#039;E&#039;&#039;&#039; este un număr natural dat. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;pxp.in&#039;&#039;&#039; conține pe prima lin...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1950_-_PXP&amp;diff=9956&amp;oldid=prev"/>
		<updated>2024-06-03T15:10:49Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se dă un şir format din &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale nenule. Spunem că un număr e fericit dacă se poate scrie ca suma pătratelor a două numere naturale. Notăm cu &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; numărul numerelor fericite din şir şi cu &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; produsul acestora. Aflaţi numărul &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; precum şi două numere naturale care au suma pătratelor egală cu &amp;#039;&amp;#039;&amp;#039;PE&amp;#039;&amp;#039;&amp;#039;, unde &amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039; este un număr natural dat. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;pxp.in&amp;#039;&amp;#039;&amp;#039; conține pe prima 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 format din &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale nenule. Spunem că un număr e fericit dacă se poate scrie ca suma pătratelor a două numere naturale. Notăm cu &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; numărul numerelor fericite din şir şi cu &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; produsul acestora. Aflaţi numărul &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; precum şi două numere naturale care au suma pătratelor egală cu &amp;#039;&amp;#039;&amp;#039;PE&amp;#039;&amp;#039;&amp;#039;, unde &amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039; este un număr natural dat.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;pxp.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele N şi E , iar pe a doua linie N numere naturale separate prin spațiu.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;pxp.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul K, reprezentând numărul numerelor fericite din şir iar pe a doua linie cele două numere care au suma pătratelor egală cu PE.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ N ≤ 100.000&lt;br /&gt;
* 1 ≤ E ≤ 3 &lt;br /&gt;
* numerele din şir sunt mai mici decât 1.000.001 şi cel puţin un număr din şir este fericit&lt;br /&gt;
* 1 ≤ P ≤ 1036&lt;br /&gt;
* pentru a doua cerinţă se va afişa orice soluţie, fiecare test având soluţie&lt;br /&gt;
* pentru prima cerinţă se acordă 40p, iar pentru a doua 60p&lt;br /&gt;
* 0% din teste au P ≤ 1000000, iar alte 40% au P ≤ 1018&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; pxp.in&lt;br /&gt;
&lt;br /&gt;
5 1&lt;br /&gt;
11 2 13 7 5&lt;br /&gt;
; pxp.out&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
3 11&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Avem &amp;#039;&amp;#039;&amp;#039;N=5&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;E=1&amp;#039;&amp;#039;&amp;#039;. În şir sunt 3 numere fericite, 2, 13 şi 5, deoarece 2=12+12 , 13=22+32 şi 5=12+22. Produsul lor este 130=32+112, deci două numere pentru care suma pătratelor este P1 sunt 3 şi 11.&lt;br /&gt;
&amp;lt;br&amp;gt;&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_happy_number(num):&lt;br /&gt;
    i = 1&lt;br /&gt;
    while i * i &amp;lt;= num:&lt;br /&gt;
        if num - i * i == int((num - i * i) ** 0.5) ** 2:&lt;br /&gt;
            return True&lt;br /&gt;
        i += 1&lt;br /&gt;
    return False&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;pxp.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    N, E = map(int, fin.readline().split())&lt;br /&gt;
    numbers = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
happy_numbers = []&lt;br /&gt;
product = 1&lt;br /&gt;
for num in numbers:&lt;br /&gt;
    if is_happy_number(num):&lt;br /&gt;
        happy_numbers.append(num)&lt;br /&gt;
        product *= num&lt;br /&gt;
&lt;br /&gt;
K = len(happy_numbers)&lt;br /&gt;
&lt;br /&gt;
target_sum = product * E&lt;br /&gt;
found = False&lt;br /&gt;
for i in range(len(happy_numbers)):&lt;br /&gt;
    for j in range(i + 1, len(happy_numbers)):&lt;br /&gt;
        if happy_numbers[i] ** 2 + happy_numbers[j] ** 2 == target_sum:&lt;br /&gt;
            result = (happy_numbers[i], happy_numbers[j])&lt;br /&gt;
            found = True&lt;br /&gt;
            break&lt;br /&gt;
    if found:&lt;br /&gt;
        break&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;pxp.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    fout.write(str(K) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    fout.write(&amp;quot; &amp;quot;.join(map(str, result)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RebecaBud</name></author>
	</entry>
</feed>