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