# FL123 - Editorial

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