ধরুন আমাদের দুটি সংখ্যা 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