3785 - AI: Difference between revisions
No edit summary |
No edit summary |
||
Line 51: | Line 51: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicatie == | |||
Dacă α=arctg(5/12), atunci sin(α)=5/13 şi cos(α)=12/13. | |||
Avem E(3)=2⋅13⋅cos(α)+2⋅13*2⋅cos(2α)+2⋅13*3⋅cos(3α)=2⋅13⋅12/13+2⋅13*2⋅(2⋅cos2(α)−1)+2⋅13*3⋅(4⋅cos*3(α)−3⋅cos(α))=24+238+1656=1918. |
Revision as of 17:55, 8 January 2024
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
<syntaxhighlight lang="python" line>
- 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")
</syntaxhighlight>
Explicatie
Dacă α=arctg(5/12), atunci sin(α)=5/13 şi cos(α)=12/13. Avem E(3)=2⋅13⋅cos(α)+2⋅13*2⋅cos(2α)+2⋅13*3⋅cos(3α)=2⋅13⋅12/13+2⋅13*2⋅(2⋅cos2(α)−1)+2⋅13*3⋅(4⋅cos*3(α)−3⋅cos(α))=24+238+1656=1918.