3336 - acadele: Difference between revisions
No edit summary |
No edit summary |
||
Line 11: | Line 11: | ||
2 | 2 | ||
; Iesire | ; Iesire | ||
Datele de intrare corespund restrictiilor impuse | |||
9 | 9 | ||
== Exemplu 2 == | == Exemplu 2 == |
Latest revision as of 21:39, 2 January 2024
Cerinţa[edit | edit source]
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[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 restul împărţirii lui m la 2020.
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 1018
Exemplul 1[edit | edit source]
- Intrare
2
- Iesire
Datele de intrare corespund restrictiilor impuse 9
Exemplu 2[edit | edit source]
- Intrare
10000000000000000000
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<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[edit | edit source]
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).