Vom numi secvenţă PM o succesiune formată din plus şi minus, care NU conţine două semne minus alăturate.
De exemplu, există 5
secvenţe PM de lungime 3
: + + + , + + – , + – + , – + + , – + -.
Cerința
Să se determine numărul de secvenţe PM care conţin x
semne plus şi y
semne minus.
Date de intrare
Fişierul de intrare pm.in
conţine pe prima linie două numere naturale separate prin spaţiu x
, y
, cu semnificaţia din enunţ.
Date de ieșire
Fişierul de ieşire pm.out
va conţine o singură linie pe care va fi scris un singur număr natural, reprezentând numărul de secvenţe PM care conţin x
semne plus şi y
semne minus.
Restricții și precizări
0 ≤ y ≤ x ≤ 250
- Rezultatul va avea maxim
100
cifre. - Pentru
50%
din testele de evaluare x < 32. 10%
din punctaj se va acorda pe exemple.
Exemplu 1:
pm.in
2 1
pm.out
3
Exemplu 2:
pm.in
4 2
pm.out
10
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema PM:
#include <fstream>
using namespace std;
///Implementare proprie - 100 puncte.
///Fara triunghiul lui Pascal.
ifstream fin("pm.in");
ofstream fout("pm.out");
int m,n,k,t,y,a[1000];
int main(){
fin>>n>>k;a[++m]=1;
for(int i=k+1;i<=n+1;i++){
for(int j=1;j<=m;j++){y=a[j]*i+t;t=y/10;a[j]=y%10;}
while(t){a[++m]=t%10;t/=10;}
}
for(int i=2;i<=n+1-k;i++){int j=m;t=0;
while(j){t=t*10+a[j];a[j]=t/i;t%=i;j--;}
while(!a[m]){m--;}
}for(int i=m;i>=1;i--){fout<<a[i];}
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2449 PM
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2449 PM de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!