1942 - Ciclu Hamiltonian
Cerința[edit | edit source]
Dându-se un număr natural N
, aflaţi numărul de cicluri Hamiltoniene dintr-un graf complet cu N
noduri.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul N
.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul cerut.
Restricții și precizări[edit | edit source]
3 ≤ N ≤ 100
- două cicluri diferă dacă au cel puțin o muchie diferită
Exemplul 1:[edit | edit source]
Intrare
3
Ieșire
1
Explicație[edit | edit source]
Un graf complet cu 3
noduri are un ciclu Hamiltonian.
Exemplul 2:[edit | edit source]
Intrare
2
Ieșire
Datele nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def check_restrictions(n):
if n < 3 or n >= 100: print("Datele nu corespund restrictiilor impuse") return False return True
def inmultire(x, k):
t = 0 for i in range(1, x[0] + 1): c = x[i] * k + t x[i] = c % 10 t = c // 10 while t: x[0] += 1 x[x[0]] = t % 10 t //= 10
def calculate_factorial(n):
if not check_restrictions(n): return
x = [0] * 1001 x[0], x[1] = 1, 1
for i in range(3, n): inmultire(x, i)
for i in range(x[0], 0, -1): print(x[i], end=)
def main():
n = int(input("")) calculate_factorial(n)
if __name__ == "__main__":
main()
</syntaxhighlight>