3785 - AI

De la Universitas MediaWiki
Versiunea din 12 decembrie 2023 19:03, autor: Oros Ioana Diana (discuție | contribuții) (Pagină nouă: == Cerința == Să se afle valoarea expresiei E(n), modulo 1.000.000.007. == Date de intrare == Fișierul de intrare al.in conține pe prima linie numerele n, a, b, separate prin spațiu. == Date de ieșire == Fișierul de ieșire al.out va conține pe prima linie valoarea expresiei E(n), modulo 1.000.000.007. == Restricții și precizări == ~ 1 ≤ n ≤ 10(12) <br> ~ 1 ≤ a , b ≤ 20 == Exemplu 1 == ; Intrare : al.in :3 5 12 ; Ieșire : al.out :1918 <br> == Exemplu 2 ==...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerința

Să se afle valoarea expresiei E(n), modulo 1.000.000.007.

Date de intrare

Fișierul de intrare al.in conține pe prima linie numerele n, a, b, separate prin spațiu.

Date de ieșire

Fișierul de ieșire al.out va conține pe prima linie valoarea expresiei E(n), modulo 1.000.000.007.

Restricții și precizări

~ 1 ≤ n ≤ 10(12)
~ 1 ≤ a , b ≤ 20

Exemplu 1

Intrare
al.in
3 5 12
Ieșire
al.out
1918


Exemplu 2

Intrare
al.in
10 5 8
Ieșire
al.out
765450729


Rezolvare

#3785 - AI
import math

def calculate_E(n, a, b):
    alpha = math.atan(a * b)
    result = 0
    
    for k in range(1, n + 1):
        term = 2 * (a**2 + b**2) * k**2 * math.cos(k * alpha)
        result = (result + term) % 1000000007
    
    return result

with open("al.in", "r") as file:
    n, a, b = map(int, file.readline().split())

result = calculate_E(n, a, b)

with open("al.out", "w") as file:
    file.write(str(result))