3336 - acadele
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).