मान लीजिए हमारे पास दो संख्याएं 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