FL123 - Editorial

PROBLEM LINK
Flower Bouquet

Author:-Faiz Alam
Editorialist:-Faiz Alam
Tester:-Prasoon Jain

PREREQUISITES
Combinatorics,Maths

PROBLEM
There are n rose flowers and m tulip flowers in the garden . You have to form a flower bouquet using exactly t flowers, in which you have to use minimum of 5 roses and minimum of 2 tulip flowers. Find how many ways are there to form this flower bouquet.

EXPLANATION
Provided that we have to use minimum of 5 roses and 2 tulip flowers and in total t flowers,we can look for all possible combinations that can be made to form bouquet of t flowers using roses ( 5<=no of roses <=n) and tulips (2<=no of tulips <= m).
Example:-
if n=7 ,m=4, t=10
Since, we have to use minimum of 5 roses and 2 tulips and we have to use 10 flowers in this bouquet therefore we can select all 4 tulips along with 6 roses in 7 ways or the other combination would be taking all 7 roses along with 3 tulips in 4 ways . Hence the answer is (7+4) = 11 ways

SOLUTIONS

Setter's Solution
   #include <bits/stdc++.h>
   #define ll long long int
   using namespace std;
             
  ll factorial(ll n)
 {
       ll res = 1;
   for (ll i = 2; i <= n; i++)
            res = res * i;

  return res;
}

int main()
 {
 
ll n,m,t;
 cin>>n>>m>>t;
 
ll res=0;
for(ll i=5;i<=t-2;i++)
    {
         if(m>=t-i && t-i>0 && n-i>=0)
            {
              res+=((factorial(n)/(factorial(i)*factorial(n-i)))*(factorial(m)/(factorial(t-i)*factorial(m-t+i))) );
            }
 
     }
     cout<<res<<"\n";

}

Tester's Solution
 from math import factorial as f
n,m,t=map(int,input().split())
ans=0
for i in range(5,t-1):
      if m>=t-i and t-i>0 and n-i>=0:
             ans+=(f(n)//(f(i)*f(n-i)))*(f(m)//(f(t-i)*f(m-(t-i))))
print((ans))

Complexity:-O(N^2)

1 Like