Se consideră Triunghiul lui Pascal definit astfel: Primul rând conține numărul 1, iar celelalte numere se formează prin însumarea celor două numere de deasupra sa, considerând toate elementele din exteriorul triunghiului ca fiind egale cu 0
.
Prin Triunghiul lui Pascal Generalizat se înțelege un triunghi care se formează la fel ca Triunghiul lui Pascal (fiecare număr se obține prin însumarea celor două numere de deasupra sa), numai că primul rând va fi considerat liber, iar cele două valori de pe al doilea rând vor fi precizate.
Cerința
Dându-se numerele naturale nenule n
și m
situate pe al doilea rând al Triunghiului lui Pascal Generalizat și un număr L
, să se calculeze suma tuturor numerelor aflate pe linia L
.
Date de intrare
Fișierul de intrare genpascal.in
conține pe prima linie numerele n
și m
,iar pe a doua linie numărul L
.
Date de ieșire
Fișierul de ieșire genpascal.out
va conține pe prima linie numărul S
, reprezentând suma cerută.
Restricții și precizări
n,m ≤ 100
2 ≤ L ≤ 2000
Exemplu
genpascal.in
1 2 6
genpascal.out
48
Explicație
Pentru valorile n = 1
și m = 2
se construiește următorul triunghi :
X - rândul 1 este liber 1 2 -rândul 2 cu valorile date 1 3 2 1 4 5 2 1 5 9 7 2 1 6 14 16 9 2 rândul cerut, 6.
Suma elementelor de pe rândul al șaselea este 48
.
#include <bits/stdc++.h> using namespace std; ifstream cin("genpascal.in"); ofstream cout("genpascal.out"); int main() { int n, a[10001]={0}, c=1 , x , y; cin >> x >> y >> n; a[1]=x+y; for(int i = 1; i < n-1; i++) { int t = 0; for(int j = 1; j <= c; j++) { int cif = a[j] * 2 + t; a[j] = cif % 10; t = cif / 10; } while(t) { a[++c] = t % 10; t /=10; } } for(int i = c ; i >= 1; i--) cout << a[i]; return 0; }