3336 - acadele: Difference between revisions
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ă... |
No edit summary |
||
Line 7: | Line 7: | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
* '''1 ⩽ n ⩽ 1018''' | * '''1 ⩽ n ⩽ 1018''' | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
Line 13: | Line 12: | ||
; Iesire | ; Iesire | ||
9 | 9 | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; Intrare | ; Intrare | ||
Line 19: | Line 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> | ||
Line 47: | Line 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). |
Revision as of 21:27, 2 January 2024
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
<syntaxhighlight lang="python" line> 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()
</syntaxhighlight>
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).