मैं एक प्रोग्रामिंग प्रतियोगिता की प्रारंभिक समस्याओं को हल करने की कोशिश कर रहा हूं और 2 समस्याओं के लिए मुझे कुछ बहुत बड़े पूर्णांक की गणना और प्रिंट करना है (जैसे 100 !, 2^100)।बड़े पूर्णांक पर काम कैसे करें जो किसी भी भाषा के डेटा संरचनाओं में फिट नहीं है
मुझे इस बड़े पूर्णांक की शक्तियों की गणना करने के लिए एक तेज़ तरीका भी चाहिए। ?
क्या आप मुझे कुछ एल्गोरिदम या इस के लिए डेटा संरचनाओं सलाह कर सकते हैं (btw, मैं सी इंटरफेस और क्रियान्वयन 'मनमाना परिशुद्धता गणित' अनुभाग पढ़ें लेकिन यह पॉव के लिए() मदद नहीं करता है)
संपादित करें: मुझे लगता है स्क्वायरिंग विधि और बिट-स्थानांतरण द्वारा एक्सपोनेंटिएशन बिजली के लिए काम करेगा लेकिन मुझे इन चींटियों के लिए फैक्टोरियल की गणना करने के लिए एक तेज़ तरीका भी चाहिए। धन्यवाद।
EDIT2: रुचि रखने वालों के लिए;
सबसे छोटी बिट स्ट्रिंग लंबाई खोजें जिसमें लम्बाई के साथ सभी बिट स्ट्रिंग शामिल हैं (मेरी अंग्रेजी के लिए खेद है, मैं एक उदाहरण दूंगा)। एन < = 10000
उदाहरण के लिए, सबसे छोटी बिट स्ट्रिंग लंबाई जिसमें लम्बाई 2 (00, 01, 10, 11) के सभी स्ट्रिंग्स शामिल हैं 5 (11001) है।
इस समस्या के लिए मेरे समाधान 2 था^n + n - 1. (तो मैं 2 की शक्तियों की गणना करना चाहिए, मुझे लगता है कि मैं थोड़ा-स्थानांतरण का उपयोग करेंगे)
अन्य समस्या यह है 2 लंबाई को देखते हुए, यह पता लगाएं कि आप लंबाई एन तक कितने अलग-अलग तरीकों तक पहुंच सकते हैं। उदाहरण के लिए, इनपुट 10, 2, 3 है। फिर आपको 2 और 3 के साथ 10 तक पहुंचना चाहिए (उदाहरण के लिए, 2 + 2 + 2 + 2 + 2, 2 + 2 + 3 + 3, 3 + 2 + 2 + 3, 3 + 3 + 2 + 2 ...)। 1 < = एन < 2^63। हम मॉड 1000000007 में anwser की गणना करेंगे।
मेरा समाधान था, 2x + 3y = N, तो x = (N - 3y)/2। वाई से 0 से 2 * एन/3 तक, यदि एक्स एक पूर्णांक है, तो मुझे इस एक्स और वाई, कुल + = (x + y) के लिए सामान्यीकृत क्रमपरिवर्तन की गणना करनी चाहिए!/(एक्स! * वाई!)।
क्या अधिकतम तर्क (100 या अधिक?) और कितना समय यह जवाब गणना करने के लिए ले जाना चाहिए रहे हैं? – user502144
समस्या अलग है लेकिन मुझे 2^10000 और 100 की गणना करना है! समाधान करना। समय सीमा 1 सेकंड है और स्मृति सीमा 256 एमबी है। यदि आप रुचि रखते हैं तो मैं समस्या का अनुवाद कर सकता हूं। एक और समाधान हो सकता है लेकिन यह समस्या पाठ में लिखा गया है कि उत्तर 64 बिट से बड़ा है। – sinan
संभव डुप्लिकेट [अनसुलझा लांग लांग 93 वें फिबोनाची संख्या से परे नहीं जाएगा?] (Http://stackoverflow.com/questions/3125872/unsigned-long-long-wont-go-beyond-the-93th-fibonacci- संख्या) –