Cum calculez combinari de n luate cate k daca am n mai mic sau egal cu 1000?
este vreo alta metoda in afara de cea a calcularii factorialului?
ma gandeam la invers modular,dar nu prea stiu sa aplic
Răspunsuri la întrebare
Răspuns de
0
Combinari de n luate cate k = n! / ((n-k)! * k!)
Iar de multe ori poti sa simlifici n! cu (n-k)! si iti ramane (n-k+1)(n-k+2)...(n-1)n supra k!
Sau uneori se poate simplifica cu k mai usor. Nu trebuie sa caluzlezi mereu factorialul, in multe exercitii poti simplifica usor si inmultesti doar cateva numere.
using namespace std;
int produs( int i, int k){
//Calculeaza produsul i(i+1)(i+2)...k
int produs=1;
for(i;i<=k;i++)
produs *= i;
return produs;
}
int combinari(int n, int k){
if ((n-k)>k) return produs(n-k+1, n)/produs(1,k);
else return produs(k+1, n)/produs(1,n-k);
}
int main()
{
int a,b;
cin >> a >> b;
cout << combinari(a,b);
}
Functioneaza pe rationamentul dat de mine mai sus.
Alte întrebări interesante
Engleza,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Chimie,
9 ani în urmă
asta intrebam eu practic,cum pot sa implementez calculul asta pt numere mari