<?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=3911_-_PermPrimPF</id>
	<title>3911 - PermPrimPF - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3911_-_PermPrimPF"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3911_-_PermPrimPF&amp;action=history"/>
	<updated>2026-06-17T08:54:19Z</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=3911_-_PermPrimPF&amp;diff=9992&amp;oldid=prev</id>
		<title>Benzar Ioan: Pagină nouă: == Cerința == Se dă o mulțime cu n elemente, numere naturale. Afișați în ordine lexicografică toate permutările mulțimii date în care elementele prime sunt puncte fixe (nu își schimbă poziția). == Date de intrare == Programul citește de la tastatură numărul n și apoi n numere naturale, reprezentând elementele mulțimii. == Date de ieșire == Programul va afișa pe ecran permutările cerute, câte una pe fiecare rând și având elementele separate prin cât...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3911_-_PermPrimPF&amp;diff=9992&amp;oldid=prev"/>
		<updated>2024-06-03T16:20:06Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Se dă o mulțime cu n elemente, numere naturale. Afișați în ordine lexicografică toate permutările mulțimii date în care elementele prime sunt puncte fixe (nu își schimbă poziția). == Date de intrare == Programul citește de la tastatură numărul n și apoi n numere naturale, reprezentând elementele mulțimii. == Date de ieșire == Programul va afișa pe ecran permutările cerute, câte una pe fiecare rând și având elementele separate prin cât...&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ă o mulțime cu n elemente, numere naturale. Afișați în ordine lexicografică toate permutările mulțimii date în care elementele prime sunt puncte fixe (nu își schimbă poziția).&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul n și apoi n numere naturale, reprezentând elementele mulțimii.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran permutările cerute, câte una pe fiecare rând și având elementele separate prin câte un spaţiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*1 &amp;lt; n ≤ 15&lt;br /&gt;
*numărul valorilor prime din șir va fi aproximativ egal cu cel al valorilor neprime&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
;Intrare&lt;br /&gt;
5&amp;lt;br&amp;gt;&lt;br /&gt;
9 7 1 2 8&lt;br /&gt;
;Iesire&lt;br /&gt;
1 7 8 2 9 &amp;lt;br&amp;gt;&lt;br /&gt;
1 7 9 2 8 &amp;lt;br&amp;gt;&lt;br /&gt;
8 7 1 2 9 &amp;lt;br&amp;gt;&lt;br /&gt;
8 7 9 2 1 &amp;lt;br&amp;gt;&lt;br /&gt;
9 7 1 2 8 &amp;lt;br&amp;gt;&lt;br /&gt;
9 7 8 2 1 &lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import itertools&lt;br /&gt;
&lt;br /&gt;
def is_prime(num):&lt;br /&gt;
    if num &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(2, int(num**0.5) + 1):&lt;br /&gt;
        if num % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def read_input():&lt;br /&gt;
    n = int(input().strip())&lt;br /&gt;
    elements = list(map(int, input().strip().split()))&lt;br /&gt;
    return n, elements&lt;br /&gt;
&lt;br /&gt;
def write_output(permutations):&lt;br /&gt;
    for perm in permutations:&lt;br /&gt;
        print(&amp;quot; &amp;quot;.join(map(str, perm)))&lt;br /&gt;
&lt;br /&gt;
def generate_permutations(n, elements):&lt;br /&gt;
    prime_positions = {i: elements[i] for i in range(n) if is_prime(elements[i])}&lt;br /&gt;
    non_prime_elements = [elements[i] for i in range(n) if i not in prime_positions]&lt;br /&gt;
    &lt;br /&gt;
    non_prime_permutations = itertools.permutations(non_prime_elements)&lt;br /&gt;
    &lt;br /&gt;
    permutations = []&lt;br /&gt;
    for perm in non_prime_permutations:&lt;br /&gt;
        perm_list = list(elements)&lt;br /&gt;
        perm_iter = iter(perm)&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            if i not in prime_positions:&lt;br /&gt;
                perm_list[i] = next(perm_iter)&lt;br /&gt;
        permutations.append(perm_list)&lt;br /&gt;
    &lt;br /&gt;
    return sorted(permutations)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, elements = read_input()&lt;br /&gt;
    &lt;br /&gt;
    if not (1 &amp;lt; n &amp;lt;= 15):&lt;br /&gt;
        raise ValueError(&amp;quot;n trebuie să fie între 1 și 15&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    if not all(isinstance(x, int) and x &amp;gt;= 0 for x in elements):&lt;br /&gt;
        raise ValueError(&amp;quot;Toate elementele trebuie să fie numere naturale.&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    permutations = generate_permutations(n, elements)&lt;br /&gt;
    write_output(permutations)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Benzar Ioan</name></author>
	</entry>
</feed>