0425 - Viete
Cerință
Se consideră ecuația de gradul al doilea ax^2+bx+c=0 cu coeficienți întregi și un număr natural n. Să se determine Sn=xn1+xn2 unde x1 și x2 sunt rădăcinile ecuației, folosind relațiile lui Viete.
Date de intrare
Programul citește de la tastatură numerele a b c n.
Date de ieșire
Programul afișează pe ecran numărul S, reprezentând valoarea cerută.
Restricții de precizări
- 1 ≤ n ≤ 10
- -10 ≤ b,c ≤ 10, a = 1
- rezultatul se va înscrie pe 32 de biți cu semn
Indicații de rezolvare
Considerăm relațiile lui Viete
S=x1+x2=−ba
P=x1⋅x2=ca Se demonstrează că:
Sn=S⋅Sn−1−P⋅Sn−2
S1=S
S2=S2−2⋅P Pentru rezolvarea problemei folosim relațiile de mai sus.
Exemplu:
- Intrare
- 1 -3 2 4
- Ieșire
- 17
Rezolvare
<syntaxhighlight lang="python" line="1" start="1"> def solve(a, b, c, n):
# Calculăm S și P folosind relațiile lui Viete S = -b/a P = c/a
# Dacă n este 1, returnăm S if n == 1: return int(S) # Dacă n este 2, calculăm și returnăm S^2 - 2*P elif n == 2: return int(S**2 - 2*P) else: # Pentru n mai mare decât 2, folosim formula recursivă pentru a calcula Sn Sn_minus_1 = S**2 - 2*P Sn_minus_2 = S for _ in range(3, n+1): Sn = S*Sn_minus_1 - P*Sn_minus_2 Sn_minus_2 = Sn_minus_1 Sn_minus_1 = Sn return int(Sn)
- Citim numerele a, b, c, n de la tastatură
a, b, c, n = map(int, input().split())
- Apelăm funcția solve și afișăm rezultatul
print(solve(a, b, c, n)) </syntaxhighlight>
Explicație
S=3,P=2 S1=S=3 S2=S2−2⋅P=32−2⋅2=5 S3=S⋅S2−P⋅S1=3⋅5−2⋅3=9 S4=S⋅S3−P⋅S2=3⋅9−2⋅5=17