मान लीजिए हमारे पास एक रिंग है, जो 1 से N तक की कुछ संख्याओं से बनी है। हमारे पास दो संख्याएं A और B भी हैं। अब, हम किसी भी स्थान पर खड़े हो सकते हैं (मान लें x) और कुल दूरी के योग (मान लें Z = X से A तक की दूरी + X से B तक की दूरी) के संबंध में गिनती ऑपरेशन कर सकते हैं। हमें X का चयन करना है ताकि Z न्यूनतम हो। अंत में Z का मान लौटाएं। हमें ध्यान रखना होगा कि X, A और B के समान नहीं होगा।
तो, यदि इनपुट N = 30, A = 10, B = 20 जैसा है, तो आउटपुट 10 होगा क्योंकि X = 15 चुनने पर, X से A की दूरी 5 है, और X से B की दूरी 5 है। तो, कुल दूरी = 5 + 5 = 10।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
यदि a > b शून्येतर है, तो:
a और b को स्वैप करें
clock_wise_dist := b - a
counter_clock_wise_dist := (a - 1) + (n - b + 1)
minimum_dist := clock_wise_dist और counter_clock_wise_dist का न्यूनतम
यदि minimum_dist 1 के समान है, तो:
3 लौटाएं
minimum_dist लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def get_min_z(n, a, b): if (a > b): a, b = b, a clock_wise_dist = b - a counter_clock_wise_dist = (a - 1) + (n - b + 1) minimum_dist = min(clock_wise_dist, counter_clock_wise_dist) if (minimum_dist == 1): return 3 return minimum_dist n = 30 a = 10 b = 20 print(get_min_z(n, a, b))
इनपुट
30, 10, 20
आउटपुट
10