मान लीजिए कि हमारे पास एक संख्या n है। तो टूर्नामेंट में n टीमों की संख्या होती है जिनके कुछ नियम होते हैं -
-
यदि टीमों की संख्या वर्तमान में भी है, तो प्रत्येक टीम का दूसरी टीम में विलय हो जाता है। और कुल (n/2) मैच खेले जाते हैं, उनमें से (n/2) विजेता टीमें अगले राउंड में जाएंगी।
-
यदि टीमों की संख्या विषम है, तो एक टीम बेतरतीब ढंग से टूर्नामेंट में चली जाती है, और बाकी का विलय हो जाता है। तो कुल (n-1)/2 मैच खेले जाते हैं, और (n-1)/2+1 टीमों को विजेता के रूप में अगले दौर में ले जाया जाता है।
हमें खेले गए मैचों की कुल संख्या ज्ञात करनी है ताकि हमें अंतिम विजेता मिल सके।
इसलिए, यदि इनपुट n =10 जैसा है, तो आउटपुट 9 होगा क्योंकि
-
प्रारंभ में 5-5 डिवीजन होंगे, उनमें से 5 योग्य होंगे
-
अब एक टीम को गेम में पास करें और 2-2 टीमों को विभाजित करें, ताकि 3 क्वालीफाई कर सकें
-
अब एक टीम को गेम में पास करें और 1-1 टीमों को विभाजित करें, ताकि 2 क्वालीफाई कर सकें
-
1-1 से विभाजित करें और एक विजेता के रूप में योग्य होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उत्तर :=0
-
जबकि n 1 के समान नहीं है, करें
-
f:=(n/2) की मंजिल
-
शेष :=n मॉड 2
-
उत्तर:=उत्तर + च
-
n :=f + शेष
-
-
वापसी उत्तर
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n): ans = 0 while n != 1: f = n//2 remainder = n % 2 ans += f n = f + remainder return ans n = 10 print(solve(n))
इनपुट
10
आउटपुट
9