मान लीजिए हमारे पास एक संख्या 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 विभाजित करें और एक विजेता के रूप में क्वालीफाई करेगा
हल करने के चरण
- ans := 0
- जब n != 1:
- f := n // 2 का फ्लोर
- remainder := n % 2
- ans := ans + f
- n := f + remainder
- ans वापस करें
उदाहरण (Python)
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