3785 - AI: Diferență între versiuni
De la Universitas MediaWiki
(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 ==...) |
Fără descriere a modificării |
||
Linia 1: | Linia 1: | ||
Al Bundy a plecat la serviciu, lăsându-i soţiei lui, Peg, cardul de cumpărături. PIN-ul este valoarea expresiei E(n)=∑nk=1(2⋅(a2+b2)k2⋅cos(k⋅α)), | |||
unde α=arctg(ab) , iar n, a, b sunt numere naturale nenule. | |||
== Cerința == | == Cerința == | ||
Să se afle valoarea expresiei E(n), modulo 1.000.000.007. | Să se afle valoarea expresiei E(n), modulo 1.000.000.007. | ||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare | Fișierul de intrare alin.txt conține pe prima linie numerele n, a, b, separate prin spațiu. | ||
== Date de ieșire == | == Date de ieșire == | ||
Fișierul de ieșire | Fișierul de ieșire alout.txt va conține pe prima linie valoarea expresiei E(n), modulo 1.000.000.007. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
*1 ≤ n ≤ 10(12) | |||
*1 ≤ a , b ≤ 20 | |||
== Exemplul 1 == | |||
== | ; alin.txt | ||
; | |||
:3 5 12 | :3 5 12 | ||
; | ; alout.txt | ||
:1918 | :1918 | ||
<br> | <br> | ||
== | == Exemplul 2 == | ||
; | ; alin.txt | ||
:10 5 8 | :10 5 8 | ||
; | ; alout.txt | ||
:765450729 | :765450729 | ||
<br> | <br> | ||
Linia 30: | Linia 27: | ||
import math | import math | ||
def | def calculate_expression(n, a, b): | ||
alpha = math.atan(a * b) | alpha = math.atan(a * b) | ||
result = 0 | result = 0 | ||
for k in range(1, n + 1): | for k in range(1, n + 1): | ||
term = 2 * (a**2 + b**2) * k**2 * math.cos(k * alpha) | term = (2 * (a**2 + b**2) * k**2 * math.cos(k * alpha)) % 1000000007 | ||
result = (result + term) % 1000000007 | result = (result + term) % 1000000007 | ||
return result | return result | ||
def verificare_restrictii(n, a, b): | |||
if 1 <= n <= 10**12 | |||
1 <= a, b <= 20: | |||
return True | |||
else: | |||
return False | |||
with open(" | if __name__ == "__main__": | ||
with open("alin.txt", "r") as input_file, open("alout.txt", "w") as output_file: | |||
n, a, b = map(int, input_file.readline().split()) | |||
result = calculate_expression(n, a, b) | |||
output_file.write(str(result) + "\n") | |||
</syntaxhighlight> | </syntaxhighlight> |
Versiunea de la data 8 ianuarie 2024 17:52
Al Bundy a plecat la serviciu, lăsându-i soţiei lui, Peg, cardul de cumpărături. PIN-ul este valoarea expresiei E(n)=∑nk=1(2⋅(a2+b2)k2⋅cos(k⋅α)), unde α=arctg(ab) , iar n, a, b sunt numere naturale nenule.
Cerința
Să se afle valoarea expresiei E(n), modulo 1.000.000.007.
Date de intrare
Fișierul de intrare alin.txt conține pe prima linie numerele n, a, b, separate prin spațiu.
Date de ieșire
Fișierul de ieșire alout.txt 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
Exemplul 1
- alin.txt
- 3 5 12
- alout.txt
- 1918
Exemplul 2
- alin.txt
- 10 5 8
- alout.txt
- 765450729
Rezolvare
#3785 - AI
import math
def calculate_expression(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)) % 1000000007
result = (result + term) % 1000000007
return result
def verificare_restrictii(n, a, b):
if 1 <= n <= 10**12
1 <= a, b <= 20:
return True
else:
return False
if __name__ == "__main__":
with open("alin.txt", "r") as input_file, open("alout.txt", "w") as output_file:
n, a, b = map(int, input_file.readline().split())
result = calculate_expression(n, a, b)
output_file.write(str(result) + "\n")