0425 - Viete

From Bitnami MediaWiki
Revision as of 20:57, 24 October 2023 by Bonte Lucas Gabriel (talk | contribs) (Pagină nouă: ==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''' *...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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)
  1. Citim numerele a, b, c, n de la tastatură

a, b, c, n = map(int, input().split())

  1. 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