चीनी अवशेष प्रमेय हमें बताता है कि हम हमेशा एक संख्या पा सकते हैं जो अलग-अलग प्रमुख तरीकों के तहत किसी भी आवश्यक अवशेष का उत्पादन करता है। आपका लक्ष्य बहुपद समय में ऐसी संख्या को आउटपुट करने के लिए कोड लिखना है। सबसे छोटा कोड जीतता है।
उदाहरण के लिए, मान लें कि हमें ये बाधाएँ दी गई हैं ( %मॉड का प्रतिनिधित्व करता है):
n % 7 == 2
n % 5 == 4
n % 11 == 0
एक उपाय है n=44। पहला बाधा संतुष्ट है क्योंकि 44 = 6*7 + 2, और इसलिए 44शेष 2जब विभाजित होता है 7, और इस प्रकार 44 % 7 == 2। अन्य दो बाधाओं को भी पूरा किया जाता है। अन्य समाधान मौजूद हैं, जैसे कि n=814और n=-341।
इनपुट
जोड़े की एक गैर-रिक्त सूची (p_i,a_i), जहां प्रत्येक मापांक p_iएक अलग प्रमुख है और प्रत्येक लक्ष्य a_iसीमा में एक प्राकृतिक संख्या है 0 <= a_i < p_i। जो भी रूप सुविधाजनक है उसमें आप इनपुट ले सकते हैं; यह वास्तव में जोड़े की सूची नहीं है। आप यह नहीं मान सकते हैं कि इनपुट छांटा गया है।
उत्पादन
एक पूर्णांक nजैसे कि n % p_i == a_iप्रत्येक सूचकांक के लिए i। यह इस तरह के सबसे छोटे मूल्य नहीं है, और नकारात्मक हो सकता है।
बहुपद समय प्रतिबंध
सस्ता समाधान है कि बस की कोशिश को रोकने के लिए n=0, n=1, n=2, और इतने पर, अपने कोड बहुपद समय में में चलाना चाहिए इनपुट की लंबाई । ध्यान दें कि mइनपुट में एक संख्या की लंबाई है Θ(log m), इसलिए mस्वयं इसकी लंबाई में बहुपद नहीं है। इसका मतलब यह है कि आप mएक ऑपरेशन के mसमय को गिन या नहीं कर सकते हैं , लेकिन आप मानों पर अंकगणितीय संचालन की गणना कर सकते हैं।
हो सकता है कि आप इसके आस-पास प्राप्त करने के लिए एक अक्षम इनपुट प्रारूप का उपयोग न करें।
अन्य प्रतिबंध
अंतर्निहित इन्स को निम्नलिखित करने की अनुमति नहीं है: चीनी रेमिनेडर प्रमेय को लागू करें, समीकरणों को हल करें, या कारक संख्याएं।
आप मॉड का पता लगाने के लिए बिल्ट-इन का उपयोग कर सकते हैं और मॉड्यूलर जोड़, घटाव, गुणा, और घातांक (प्राकृतिक-संख्या प्रतिपादक के साथ) कर सकते हैं। आप मॉड्यूलर उलटा, विभाजन, और आदेश-खोज सहित अन्य अंतर्निहित मॉड्यूलर संचालन का उपयोग नहीं कर सकते हैं ।
परीक्षण के मामलों
ये सबसे छोटा गैर-नकारात्मक समाधान देते हैं। आपका उत्तर अलग हो सकता है। यह शायद बेहतर है यदि आप सीधे जांचते हैं कि आपका आउटपुट प्रत्येक बाधा को संतुष्ट करता है।
[(5, 3)]
3
[(7, 2), (5, 4), (11, 0)]
44
[(5, 1), (73, 4), (59, 30), (701, 53), (139, 112)]
1770977011
[(982451653, 778102454), (452930477, 133039003)]
68121500720666070