Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Ne propunem să aflăm al n
-lea termen al progresiei geometrice cu primul termen a
și rația r
.
Știm că o progresie geometrică este de forma a, a * r, a * r^2, a * r^3, …
. Practic, termenul i
(i ≥ 1
) este egal cu a * r^(i - 1)
, unde a^b
reprezintă operația a
la puterea b
.
Așadar, pentru a găsi termenul n al unei progresii aritmetice, vom calcula a * r^(n - 1)
.
Să rezolvăm problema în C++. Asumăm că n ≥ 1
.
#include <iostream>
using namespace std;
int ridicareLaPutere(int baza, int exponent) {
//Returnează baza la puterea exponent. Se poate folosi ridicarea la putere în timp logaritmic
int r = 1;
for(int i = 1; i <= exponent; i++) {
r = r * baza;
}
return r;
}
int progresieGeom(int n, int primulTermen, int ratie) {
//Folosim formula g(n) = primulTermen * ratie^(n - 1)
return primulTermen * ridicareLaPutere(ratie, n - 1);
}
int main()
{
int n, a, r;
cin >> n >> a >> r;
cout << "Al " << n << "-lea termen al progresiei geometrice este " << progresieGeom(n, a, r);
return 0;
}