कभी-कभी, प्रोग्राम लिखते समय, आपको किसी कारण या अन्य (जैसे क्रिप्टोग्राफी) के लिए प्राइम नंबर का उपयोग करने की आवश्यकता होती है। मुझे लगता है कि कभी-कभी, आपको एक समग्र संख्या का भी उपयोग करने की आवश्यकता होती है। कभी-कभी, पीपीसीजी पर कम से कम यहां, आपके कार्यक्रम को मनमाने परिवर्तनों से निपटने में सक्षम होना चाहिए। और परिस्थितियों में आसानी से एक दिलचस्प पीपीसीजी प्रश्न बनाने के लिए संघर्ष किया, शायद यहां तक कि आपके द्वारा उपयोग किए जा रहे नंबर भी भ्रष्टाचार के लिए प्रतिरोधी हो…
परिभाषाएं
एक मिश्रित संख्या एक पूर्णांक that 4 है जो अभाज्य नहीं है, अर्थात यह दो छोटे पूर्णांकों का गुणनफल है जो 1. से अधिक है। एक बिटफ्लिप-प्रतिरोधी समग्र संख्या को इस प्रकार परिभाषित किया गया है: यह एक समग्र धनात्मक पूर्णांक है जिसके लिए, यदि आप इसे लिखते हैं बिट्स की न्यूनतम संभव संख्या में बाइनरी में, आप संख्या से किसी एक या दो बिट्स को बदल सकते हैं, और संख्या अभी भी समग्र है।
उदाहरण
उदाहरण के लिए, संख्या 84 पर विचार करें। बाइनरी में, यह 1010100
। यहाँ सभी संख्याएँ हैं जो उस से 2 बिट्स से अधिक नहीं हैं:
0000100 4 2 × 2 0010000 16 4 × 4 0010100 20 4 × 5 0010101 21 3 × 7 0010110 22 2 × 11 0011100 28 4 × 7 0110100 52 4 × 13 1000000 64 8 × 8 1000100 68 4 × 17 1000101 69 3 × 23 1000110 70 7 × 10 1001100 76 4 × 19 1010000 80 8 × 10 1010001 81 9 × 9 1010010 82 2 × 41 1010100 84 7 × 12 1010101 85 5 × 17 1010110 86 2 × 43 1010111 87 3 × 29 1011000 88 8 × 11 1011100 92 4 × 23 1011101 93 3 × 31 1011110 94 2 × 47 1100100 100 10 × 10 1110000 112 8 × 14 1110100 116 4 × 29 1110101 117 9 × 13 1110110 118 2 × 59 1111100 124 4 × 31
पहला कॉलम बाइनरी में संख्या है; दूसरा स्तंभ दशमलव में संख्या है। जैसा कि तीसरा कॉलम इंगित करता है, ये सभी संख्याएं संयुक्त हैं। जैसे, 84 एक बिटफ्लिप-प्रतिरोधी कंपोजिट संख्या है।
काम
आपको निम्नलिखित तीन कार्यक्रमों या कार्यों में से एक लिखना होगा, जो भी आपकी भाषा के लिए सबसे अधिक समझ में आता है:
- एक प्रोग्राम या फ़ंक्शन जो इनपुट के रूप में एक नॉनजेटिव पूर्णांक n लेता है , और पहले n बिटफ्लिप-प्रतिरोधी समग्र संख्याओं को आउटपुट करता है ।
- एक कार्यक्रम या समारोह है कि ग़ैर-ऋणात्मक पूर्णांक लेता n इनपुट के रूप में है, और कम से कम सभी bitflip प्रतिरोधी संयुक्त संख्या आउटपुट n (या आप चाहें, तो कम से कम या बराबर है, तो n , यानी आप चुन सकते हैं कि n उत्पादन करता है, तो bitflip में शामिल है प्रतिरोधी)।
- एक प्रोग्राम या फ़ंक्शन जो कोई इनपुट नहीं लेता है, और सभी बिटफ्लिप-प्रतिरोधी समग्र संख्याओं को आउटपुट करता है। (यह आउटपुट आउटपुट उत्पादन में सक्षम होना चाहिए, जबकि प्रोग्राम अभी भी चल रहा है, जैसे कि स्टडआउट पर प्रिंटिंग, एक आलसी सूची, या एक जनरेटर; आप सिर्फ पूरी सूची की गणना नहीं कर सकते हैं और फिर इसे प्रिंट कर सकते हैं।)
परीक्षण के मामलों
यहां पहले कुछ बिटफ्लिप-प्रतिरोधी कंपोजिट नंबर दिए गए हैं:
84, 184, 246, 252, 324, 342, 424, 468, 588, 636, 664, 670, 712, 730, 934, 958
स्पष्टीकरण
- यह केवल आपके द्वारा उत्पादित नंबर है जो बिटफ्लिप के लिए प्रतिरोधी है। यह ऐसा कार्यक्रम बनाने के बारे में नहीं है जो उन्हें बिटफ़्लिप के लिए प्रतिरोधी बनाता है; कार्यक्रम में जो भी संख्याएँ आपको पसंद हों, उनका उपयोग करें।
- आपके द्वारा आउटपुट किए जाने वाले नंबरों को "अग्रणी शून्य" में एक बिटफ्लिप के लिए प्रतिरोधी नहीं होना चाहिए; कल्पना करें कि संख्याओं को न्यूनतम संभव संख्या में बिट्स में संग्रहीत किया जाएगा, और केवल उन बिट्स को फ़्लिपिंग के लिए प्रतिरक्षा होना चाहिए। हालांकि, आपके द्वारा आउटपुट किए जाने वाले नंबरों पर शुरुआती 1 बिट्स को बिटफ़्लिप्स के लिए प्रतिरक्षा होना चाहिए।
- किसी भी एल्गोरिथ्म का उपयोग करें जिसे आप पसंद करते हैं जो सही परिणाम उत्पन्न करता है; आपको यहां दक्षता पर चिह्नित नहीं किया जा रहा है।
- यदि आप यह साबित कर सकते हैं कि बहुत कम बिटफ्लिप-प्रतिरोधी समग्र संख्याएं हैं, तो ए) आउटपुट प्रारूप पर प्रतिबंध हटा दिए गए हैं, और बी) हार्डकोडिंग सूची की अनुमति दी जाएगी (हालांकि शायद इसकी गणना करने की तुलना में अधिक क्रिया है)। यह नियम अधिकतर पूर्णता के लिए है; मुझे इसकी प्रासंगिकता की उम्मीद नहीं है।
विजय की स्थिति
यह कोड-गोल्फ है , इसलिए हमेशा की तरह, कम बेहतर है। हमेशा की तरह, कार्यक्रम की लंबाई बाइट्स में मापी जाएगी।
n
यदिn
बिटफ्लिप-प्रतिरोधी है? (यानी इसे "n से कम या उसके बराबर"