3336 - acadele: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Candyman are acadele de trei feluri: cu căpşuni, cu vişine şi cu zmeură, oricâte acadele din fiecare fel. Cei '''n''' copii de la grupa pregătitoare şi-au ales fiecare câte o acadea astfel încât cel mult doi copii şi-au ales cu vişine. Dacă notăm cu '''m''' numărul de moduri în care puteau să-şi aleagă fiecare câte o acadea, să se afle restul împărţirii lui '''m''' la '''2020'''. == Date de intrare == Programul citește de la tastatură...)
 
Fără descriere a modificării
Linia 7: Linia 7:
== Restricţii şi precizări ==
== Restricţii şi precizări ==
* '''1 ⩽ n ⩽ 1018'''
* '''1 ⩽ n ⩽ 1018'''
== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
Linia 13: Linia 12:
; Iesire
; Iesire
  9
  9
== Exemplu 2 ==
== Exemplu 2 ==
; Intrare
; Intrare
Linia 19: Linia 17:
; Iesire
; Iesire
  Datele de intrare nu corespund restrictiilor impuse
  Datele de intrare nu corespund restrictiilor impuse
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
Linia 47: Linia 44:
     main()
     main()
</syntaxhighlight>
</syntaxhighlight>
== Explicatie ==
== Explicatie ==
  Cei doi copii puteau să-şi aleagă acadelele astfel: (c,c), (z,z), (v,v), (c,v), (v,c), (c,z), (z,c), (v,z), (z,v).
  Cei doi copii puteau să-şi aleagă acadelele astfel: (c,c), (z,z), (v,v), (c,v), (v,c), (c,z), (z,c), (v,z), (z,v).

Versiunea de la data 2 ianuarie 2024 21:27

Cerinţa

Candyman are acadele de trei feluri: cu căpşuni, cu vişine şi cu zmeură, oricâte acadele din fiecare fel. Cei n copii de la grupa pregătitoare şi-au ales fiecare câte o acadea astfel încât cel mult doi copii şi-au ales cu vişine. Dacă notăm cu m numărul de moduri în care puteau să-şi aleagă fiecare câte o acadea, să se afle restul împărţirii lui m la 2020.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa pe ecran restul împărţirii lui m la 2020.

Restricţii şi precizări

  • 1 ⩽ n ⩽ 1018

Exemplul 1

Intrare
2 
Iesire
9

Exemplu 2

Intrare
10000000000000000000
Iesire
Datele de intrare nu corespund restrictiilor impuse

Rezolvare

def compute_ways(n):
    mod = 2020
    if n == 1:
        return 3 % mod
    elif n == 2:
        return 9 % mod
    else:
        return (3 * 3 * pow(2, n-2, mod)) % mod


def main():
    n = int(input())

    if n > pow(10, 18):
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    ways = compute_ways(n)
    print("Datele de intrare corespund restrictiilor impuse")
    print(ways)


if __name__ == "__main__":
    main()

Explicatie

Cei doi copii puteau să-şi aleagă acadelele astfel: (c,c), (z,z), (v,v), (c,v), (v,c), (c,z), (z,c), (v,z), (z,v).