৫০ ওভারের একটি ওয়ানডে ক্রিকেট ম্যাচে:
- মোট বল = ৫০ × ৬ = ৩০০ বল
- ইনপুট হিসেবে নিতে হয়:
- r1 → প্রতিপক্ষের মোট রান
- r2 → বর্তমান ব্যাটিং দলের রান
- B → বাকি বলের সংখ্যা
আমাদের বের করতে হবে:
- বর্তমান রান রেট (Current Run Rate)
- জয়ের জন্য প্রয়োজনীয় রান রেট (Required Run Rate)
প্রতিটি মান দশমিকের পরে ঠিক দুই ঘর পর্যন্ত প্রিন্ট করতে হবে।
- ৬ বল = ১ ওভার
- জিততে হলে প্রতিপক্ষের চেয়ে অন্তত ১ রান বেশি করতে হবে
- খেলা হয়েছে এমন বল = 300 - B
বর্তমান রান রেট নির্ণয় করা হয় ইতিমধ্যে করা রান এবং খেলা হওয়া বলের উপর ভিত্তি করে।
বর্তমান রান রেট = (r2 × 6) / খেলা হওয়া বল
যেখানে,
খেলা হওয়া বল = 300 - B
৬ দিয়ে গুণ করা হয় কারণ রান রেট ওভারপ্রতি (৬ বল) হিসাব করা হয়।
প্রথমে জয়ের জন্য প্রয়োজনীয় রান বের করি:
প্রয়োজনীয় রান = (r1 + 1) - r2
যদি মান ঋণাত্মক হয়, তাহলে ০ ধরা হয়, কারণ দল ইতিমধ্যে জিতে গেছে।
তারপর,
প্রয়োজনীয় রান রেট = (প্রয়োজনীয় রান × 6) / B
এটি বাকি বলগুলিতে ওভারপ্রতি কত রান করতে হবে তা নির্দেশ করে।
- যদি খেলা হওয়া বল ০ হয়, তাহলে বর্তমান রান রেট 0.00।
- যদি বাকি বল ০ হয়, তাহলে প্রয়োজনীয় রান রেট 0.00।
- যদি দল ইতিমধ্যে জিতে যায়, তাহলে প্রয়োজনীয় রান রেট 0.00।
//------ Contributor ~ --------//
//------ MD. S. M. Sarowar Hossain --------//
//------ Varendra University --------//
#include <iostream>
#include <iomanip> //setprecision আর fixed value এর জন্য দরকারি
using namespace std;
int main()
{
int n;
cin >> n;
while (n--)
{
long long r1, r2, B;
cin >> r1 >> r2 >> B;
long long ball_played = 300 - B; //৫০ ওভার = ৫০*৬ = ৩০০ বল
double current_run_rate = 0.0;
if (ball_played > 0){ // যদি একটাও বল না খেলে, তাহলে রান রেট ০.০।
current_run_rate = (r2 * 6.0) / ball_played;
}
double run_needed = (r1 + 1) - r2;
if (run_needed < 0) { //যদি ১ রানের প্রয়োজন হয়, এমন সময় ব্যাটস্ম্যান ৪, ৬ রান সংগ্রহ করে,
// তাহলে খণাত্বক সংখ্যা দেখাবে, তাই if দিয়ে এমন ঘটনা এড়াতে হবে
run_needed = 0;
}
double required_run_rate = 0.0;
if (B > 0){
required_run_rate = (run_needed * 6.0) / B;
}
cout << fixed << setprecision(2)
<< current_run_rate << " "
<< required_run_rate << endl;
}
return 0;
}