2709 - Excursie2: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
Line 3: | Line 3: | ||
Se organizează o excursie cu n participanți cu numere de ordine unice de la 1 la n pentru care se folosesc 3 mijloace de transport. Să se determine dacă se pot aranja participanții astfel încât suma numerelor de ordine din cele trei mașini să fie aceeași. Dacă este posibilă aranjarea, se vor afișa pe 3 linii numerele de ordine separate prin spații, numerele dintr-o mașină pe câte un rând, altfel se afișează NU. | Se organizează o excursie cu n participanți cu numere de ordine unice de la 1 la n pentru care se folosesc 3 mijloace de transport. Să se determine dacă se pot aranja participanții astfel încât suma numerelor de ordine din cele trei mașini să fie aceeași. Dacă este posibilă aranjarea, se vor afișa pe 3 linii numerele de ordine separate prin spații, numerele dintr-o mașină pe câte un rând, altfel se afișează NU. | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură numărul '''n'''. | |||
== Date de ieșire == | == Date de ieșire == |
Revision as of 11:27, 9 April 2023
Sursa: [1]
Cerinţa
Se organizează o excursie cu n participanți cu numere de ordine unice de la 1 la n pentru care se folosesc 3 mijloace de transport. Să se determine dacă se pot aranja participanții astfel încât suma numerelor de ordine din cele trei mașini să fie aceeași. Dacă este posibilă aranjarea, se vor afișa pe 3 linii numerele de ordine separate prin spații, numerele dintr-o mașină pe câte un rând, altfel se afișează NU.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Fișierul de ieșire numere18.out va conține o singură linie. Dacă C=1, va fi scrisă suma cerută la punctul 1. Dacă C=2, vor fi scrise nouă numere: linia pe care a află numărul m, respectiv poziția acestuia pe această linie, separate printr-un spațiu.
Restricţii şi precizări
- 1 ⩽ n ⩽ 1000
- 1 ⩽ m ⩽ 1.000.000.000
Exemplul 1
- Intrare
- numere18.in
- 1
- 4
- Ieșire
- numere18.out
- 34
Exemplul 2
- Intrare
- numere18.in
- 2
- 9
- Ieșire
- numere18.out
- 4 3
Rezolvare
<syntaxhighlight lang="python" line>
- 2709
def print_first_sequence(s):
if s == 10: print("1 2 3 4 5 ", end="") elif s == 9: print("1 2 3 6 ", end="") elif s == 7: print("3 4 ", end="") elif s == 6: print("5 ", end="")
def print_second_sequence(s):
if s == 10: print("7 8 ", end="") elif s == 9: print("5 7 ", end="") elif s == 7: print("2 5 ", end="") elif s == 6: print("2 3 ", end="")
def print_third_sequence(s):
if s == 10: print("6 9 ", end="") elif s == 9: print("4 8 ", end="") elif s == 7: print("1 6 ", end="") elif s == 6: print("1 4 ", end="")
def validate_input(n):
if n < 1 or n > 1001 or (n < 5 or n * (n + 1) % 3): print("NU") return False return True
def main():
n = int(input("Introduceti numar: ")) if not validate_input(n): return
if (n - 9) % 6 == 0: s, x = 10, (n - 9) // 6 elif (n - 8) % 6 == 0: s, x = 9, (n - 8) // 6 elif (n - 6) % 6 == 0: s, x = 7, (n - 6) // 6 elif (n - 5) % 6 == 0: s, x = 6, (n - 5) // 6
print_first_sequence(s) for i in range(x): print(s + 6 * i, s + 5 + 6 * i, end=" ") print()
print_second_sequence(s) for i in range(x): print(s + 1 + 6 * i, s + 4 + 6 * i, end=" ") print()
print_third_sequence(s) for i in range(x): print(s + 2 + 6 * i, s + 3 + 6 * i, end=" ")
print("\nDatele introduse corespund cerintelor.") print()
main() </syntaxhighlight>