মান লক্ষ্য করুন আমাদের দুটি সংখ্যা n এবং k আছে, একটি কন্টেস্টে n ছাত্র। उनमें से কিছু মেমেন্টো পাবে, কিছু সার্টিফিকেট পাবে, এবং অন্যদের কিছুই পাবে না। যারা কিছু পাবেন তাদেরকে বিজয়ী বলা হয়। কিন্তু মেমেন্টো এবং সার্টিফিকেট গণনার কিছু নিয়ম আছে। সার্টিফিকেটের সংখ্যা মেমেন্টোর সংখ্যার ঠিক k গুণ বেশি হতে হবে। বিজয়ীদের সংখ্যা n/2-এর চেয়ে বড় হতে পারবে না। এটি সম্ভব যে কোনো বিজয়ী নেই। আমাদের এই নিয়ম অনুযায়ী সর্বোচ্চ সম্ভাব্য বিজয়ীর সংখ্যা বের করতে হবে। তারপর মেমেন্টো পাওয়া ছাত্র, সার্টিফিকেট পাওয়া ছাত্র এবং বিজয়ী না হওয়া ছাত্রের সংখ্যা বের করতে হবে।
তাই, যদি ইনপুট হয় n = 18; k = 2, তবে আউটপুট হবে [3, 6, 9]।
ধাপসমূহ
এটি সমাধান করার জন্য, আমরা এই ধাপগুলো অনুসরণ করব −
x := (n / 2) / (1 + k) return x, (k * x) and (n - (x + (k * x)))
উদাহরণ
বेहतर বোঝার জন্য ইমপ্লিমেন্টেশন দেখি −
#include <bits/stdc++.h>
using namespace std;
void solve(int n, int k){
int x = (n / 2) / (1 + k);
cout << x << ", " << (k * x) << ", " << (n - (x + (k * x)));
}
int main(){
int n = 18;
int k = 2;
solve(n, k);
}
ইনপুট
8, 2
আউটপুট
3, 6, 9