c - Modulo of a 100k-digit number -


संख्याओं के लिए n और m मुझे मूल्यांकन करने की आवश्यकता है N% m n को 10 ^ 100000 के रूप में बड़ा हो सकता है, m अधिकतम 10 ^ 18

अहस्ताक्षरित लंबे समय के बारे में 2 ^ 64 है (कृपया मुझे सही करें यदि मैं गलत हूँ) जो नहीं करेंगे , तो मैंने सोचा कि मैं इसे वर्णों की सरणी में पढ़ सकता हूं, लेकिन चरित्र के शेष की गणना कैसे करें

क्या उस नंबर को एक छोटी संख्या में कम करने का कोई तरीका है, इसलिए यह चार सरणी से अस्वाभाविक लंबे समय तक (जैसे atol पर स्थानांतरित किया जा सकता है) लंबे समय के बजाय लंबे )।

इसके अलावा, मुझे लगता है कि मुझे करने के लिए एक तेज़ तरीका चाहिए, क्योंकि समय सीमा 0.1 है

किसी भी मदद की सराहना की जाती है।

कई युक्तियां हैं जो आप मॉड्यूलर बनाने के लिए कर सकते हैं अंकगणित आसान उदाहरण के लिए, मान लीजिए कि आप यह जानना चाहते हैं कि 1234567890 मॉड 17 क्या है, लेकिन आपके पास 12345678 9 का प्रतिनिधित्व करने के लिए पर्याप्त संख्यात्मक प्रकार नहीं है। ठीक है, हम % के बारे में क्या जानते हैं, यह सोचते हुए कि सभी नंबर सकारात्मक हैं ?

<पूर्व> (a + b)% e == ((a% e) + (b% e))% e (c * d)% e == ((c% e) * (डी% ई)% e

यदि आप समझ नहीं पाते हैं कि ये पहचान सही क्यों हैं, तो % की परिभाषा पर वापस जाएं और उनका अध्ययन करें आपके पास ये ठोस है।

अब जब हम जानते हैं कि, हम जानते हैं कि

  1234567890% 17 = (12345 * 100000 + 678 9 0)% 17 = ((((12345% 17) * (100000% 17))% 17) + (678 9% 17))% 17  

और अब आपके पास बहुत छोटी संख्याएं हैं यदि ये संख्याएं अभी भी बहुत बड़ी हैं, तो उन्हें थोड़ी छोटी हो जाने तक उन्हें नीचे रखें।

मैंने मठ स्टैक एक्सचेंज साइट पर एक समान सवाल का उत्तर दिया; यह आपके लिए भी मददगार हो सकता है।


Comments