चुनौती का वर्णन
प्रत्येक सकारात्मक पूर्णांक के लिए n
एक संख्या मौजूद होती है, जिसका रूप 111...10...000
विभाज्य होता है n
अर्थात एक दशमलव संख्या जो सभी के साथ शुरू होती है और सभी 1
के साथ समाप्त होती है 0
। यह साबित करना बहुत आसान है: यदि हम (सभी के) n+1
के रूप में विभिन्न संख्याओं का एक सेट लेते हैं , तो उनमें से कम से कम दो को (कबूतर सिद्धांत के अनुसार) विभाजन के बाद शेष बचेगा। इन दो संख्याओं के अंतर से विभाज्य होगा और उनका वांछित रूप होगा। आपका उद्देश्य एक प्रोग्राम लिखना है जो इस नंबर को पाता है।111...111
1
n
n
इनपुट विवरण
एक सकारात्मक पूर्णांक।
आउटपुट विवरण
एक नंबर p
के रूप में 111...10...000
, जैसे कि p ≡ 0 (mod n)
। यदि आप एक से अधिक पाते हैं - उनमें से कोई भी प्रदर्शित करें (सबसे छोटा होने की आवश्यकता नहीं है)।
टिप्पणियाँ
आपके कार्यक्रम को उचित समय में जवाब देना होगा। जिसका अर्थ है कि ब्रूट-फोर्सिंग की अनुमति नहीं है:
p = 0
while (p != 11..10.00 and p % n != 0)
p++
न तो यह है:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
के रूप में संख्याओं के माध्यम से परिवर्तन 11..10..00
की अनुमति है।
आपके कार्यक्रम को मनमाने ढंग से बड़े इनपुट को संभालने की आवश्यकता नहीं है - ऊपरी बाउंड वही है जो आपकी भाषा की ऊपरी सीमा है।
नमूना आउटपुट
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
1
और कम से कम एक होना चाहिए 0
, अन्यथा 0
किसी भी इनपुट के लिए एक समाधान है। (हालांकि इसे स्पष्ट करना अच्छा होगा।)
1
तो काम करने की।