<?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=4196_-_MPF</id>
	<title>4196 - MPF - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4196_-_MPF"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4196_-_MPF&amp;action=history"/>
	<updated>2026-05-01T10:55:56Z</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=4196_-_MPF&amp;diff=9962&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Enunt == Fie &#039;&#039;&#039;X&#039;&#039;&#039; un număr natural nenul și &#039;&#039;&#039;p&#039;&#039;&#039; cel mai mare factor prim din descompunerea în factori primi a lui &#039;&#039;&#039;X&#039;&#039;&#039;. Pentru &#039;&#039;&#039;X = 1&#039;&#039;&#039;, considerăm &#039;&#039;&#039;p = 1&#039;&#039;&#039;. Asupra lui &#039;&#039;&#039;X&#039;&#039;&#039; se pot efectua următoarele două operații:  Operația 1: &#039;&#039;&#039;X&#039;&#039;&#039; se împarte la &#039;&#039;&#039;p&#039;&#039;&#039; și devine &#039;&#039;&#039;X / p&#039;&#039;&#039;; Operația 2: &#039;&#039;&#039;X&#039;&#039;&#039; devine &#039;&#039;&#039;X * k&#039;&#039;&#039;, unde &#039;&#039;&#039;k&#039;&#039;&#039; este un număr prim și mai mare sau egal decât &#039;&#039;&#039;p&#039;&#039;&#039;. == Cerinţa == Se dau &#039;&#039;&#039;Q&#039;&#039;&#039; perechi de numere natura...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4196_-_MPF&amp;diff=9962&amp;oldid=prev"/>
		<updated>2024-06-03T15:26:52Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Fie &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; un număr natural nenul și &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; cel mai mare factor prim din descompunerea în factori primi a lui &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;. Pentru &amp;#039;&amp;#039;&amp;#039;X = 1&amp;#039;&amp;#039;&amp;#039;, considerăm &amp;#039;&amp;#039;&amp;#039;p = 1&amp;#039;&amp;#039;&amp;#039;. Asupra lui &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; se pot efectua următoarele două operații:  Operația 1: &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; se împarte la &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; și devine &amp;#039;&amp;#039;&amp;#039;X / p&amp;#039;&amp;#039;&amp;#039;; Operația 2: &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; devine &amp;#039;&amp;#039;&amp;#039;X * k&amp;#039;&amp;#039;&amp;#039;, unde &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; este un număr prim și mai mare sau egal decât &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;. == Cerinţa == Se dau &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; perechi de numere natura...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Fie &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; un număr natural nenul și &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; cel mai mare factor prim din descompunerea în factori primi a lui &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;. Pentru &amp;#039;&amp;#039;&amp;#039;X = 1&amp;#039;&amp;#039;&amp;#039;, considerăm &amp;#039;&amp;#039;&amp;#039;p = 1&amp;#039;&amp;#039;&amp;#039;. Asupra lui &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; se pot efectua următoarele două operații:&lt;br /&gt;
&lt;br /&gt;
Operația 1: &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; se împarte la &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; și devine &amp;#039;&amp;#039;&amp;#039;X / p&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
Operația 2: &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; devine &amp;#039;&amp;#039;&amp;#039;X * k&amp;#039;&amp;#039;&amp;#039;, unde &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; este un număr prim și mai mare sau egal decât &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dau &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; perechi de numere naturale nenule &amp;#039;&amp;#039;&amp;#039;(X, Y)&amp;#039;&amp;#039;&amp;#039;. Să se determine, pentru fiecare pereche, numărul minim de operații necesare pentru a-l transforma pe &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; în &amp;#039;&amp;#039;&amp;#039;Y&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Datele de intrare conțin &amp;#039;&amp;#039;&amp;#039;Q + 1&amp;#039;&amp;#039;&amp;#039; linii. Pe prima linie se găsește &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; reprezentând numărul de perechi &amp;#039;&amp;#039;&amp;#039;(X, Y)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Pe următoarele &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; linii, câte o pereche de numere naturale nenule &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Y&amp;#039;&amp;#039;&amp;#039;, despărțite printr-un singur spațiu.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Ieșirea va conține &amp;#039;&amp;#039;&amp;#039;Q&amp;#039;&amp;#039;&amp;#039; linii. Pe fiecare linie &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; se va scrie câte un număr natural reprezentând, numărul de operații determinat pentru a i-a pereche.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ Q ≤ 1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ X, Y ≤ 4.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Datorită dimensiunii mari a datelor de intrare și de ieșire, doar unele teste au fost adăugate.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
4 10&lt;br /&gt;
2 9&lt;br /&gt;
6 2&lt;br /&gt;
12 12&lt;br /&gt;
; Ieșire&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
1&lt;br /&gt;
0&lt;br /&gt;
== Explicație == &lt;br /&gt;
Pentru (4, 10): 4 devine 2 utilizând o Operație 1, apoi devine 10 utilizând o Operație 2.&lt;br /&gt;
Pentru (2, 9): 2 devine 1 utilizând o Operație 1, apoi devine 3 folosind o Operație 2 și devine 9 folosind o Operație 2.&lt;br /&gt;
Pentru (6, 2): 6 devine 2 folosind o Operație de tip 1.&lt;br /&gt;
Pentru (12, 12): Numerele sunt egale, nu este necesară nicio operație.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&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 max_prime_factor(x):&lt;br /&gt;
    factor = 2&lt;br /&gt;
    while factor * factor &amp;lt;= x:&lt;br /&gt;
        if x % factor == 0:&lt;br /&gt;
            x //= factor&lt;br /&gt;
        else:&lt;br /&gt;
            factor += 1&lt;br /&gt;
    return x&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;input.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    q = int(fin.readline())&lt;br /&gt;
    pairs = [tuple(map(int, line.split())) for line in fin]&lt;br /&gt;
&lt;br /&gt;
with open(&amp;quot;output.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    for pair in pairs:&lt;br /&gt;
        x, y = pair&lt;br /&gt;
        if x == y:&lt;br /&gt;
            fout.write(&amp;quot;0\n&amp;quot;)&lt;br /&gt;
        elif max_prime_factor(x) == max_prime_factor(y):&lt;br /&gt;
            fout.write(&amp;quot;1\n&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            fout.write(&amp;quot;2\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RebecaBud</name></author>
	</entry>
</feed>