Rezolvare completă PbInfo #2449 PM

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 Adresa de email.

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!