मान लीजिए, हमें एक बड़ी संख्या प्रदान की गई है और हमें यह पता लगाना है कि संख्या के अंकों का कोई क्रमचय 8 से विभाज्य है या नहीं। संख्या हमें स्ट्रिंग प्रारूप में प्रदान की जाती है।
इसलिए, यदि इनपुट इस प्रकार है:input_num =4696984, तो आउटपुट "आठ से विभाज्य" होगा।
इस समस्या को हल करने के लिए, हम संख्या के अंकों के साथ सभी तीन अंकों के क्रमपरिवर्तन की जांच करेंगे और देखेंगे कि क्या वे संख्या के किसी भी सभी अंकों के क्रमपरिवर्तन में हो सकते हैं। यदि संख्या के सभी अंकों के क्रमपरिवर्तन के अंत में आठ से विभाज्य तीन अंकों का क्रमपरिवर्तन होता है, तो हम कहेंगे कि क्रमपरिवर्तन 8 से विभाज्य है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि input_num <3 की लंबाई है, तो
- यदि input_num mod 8, 0 के समान है, तो
- सही लौटें
- input_num :=input_num का उल्टा
- यदि input_num mod 8, 0 के समान है, तो
- सही लौटें
- झूठी वापसी
- यदि input_num mod 8, 0 के समान है, तो
- temp_arr :=आकार 10 की एक नई सूची 0 से आरंभ की गई।
- 0 से लेकर input_num के आकार की गणना के लिए, करें
- temp_arr[input_num[गिनती] - 0] :=temp_arr[input_num[गिनती] - 0] + 1
- 104 से 999 तक की संख्या के लिए, 8 की वृद्धि करें
- अस्थायी:=गिनती
- अवसरें :=आकार 10 की एक नई सूची 0 से आरंभ की गई।
- घटनाएं[अस्थायी मोड 10]:=घटनाएं[अस्थायी मोड 10] + 1
- अस्थायी:=अस्थायी / 10
- घटनाएं[अस्थायी मोड 10]:=घटनाएं[अस्थायी मोड 10] + 1
- अस्थायी:=अस्थायी / 10
- घटनाएं[अस्थायी मोड 10]:=घटनाएं[अस्थायी मोड 10] + 1
- अस्थायी:=गिनती
- यदि घटनाएँ होती हैं [अस्थायी मॉड 10]> temp_arr [अस्थायी मॉड 10], तो
- अगले पुनरावृत्ति के लिए जाएं
- अस्थायी:=अस्थायी / 10
- यदि घटनाएँ होती हैं [अस्थायी मॉड 10]> temp_arr [अस्थायी मॉड 10], तो
- अगले पुनरावृत्ति के लिए जाएं
- अस्थायी:=अस्थायी / 10
- यदि घटनाएँ होती हैं [अस्थायी मॉड 10]> temp_arr [अस्थायी मॉड 10], तो
- अगले पुनरावृत्ति के लिए जाएं
- सही लौटें
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(input_num): if len(input_num) < 3: if int(input_num) % 8 == 0: return True input_num = input_num[::-1] if int(input_num) % 8 == 0: return True return False temp_arr = 10 * [0] for count in range(0, len(input_num)): temp_arr[int(input_num[count]) - 0] += 1 for count in range(104, 1000, 8): temp = count occurences = 10 * [0] occurences[int(temp % 10)] += 1 temp = temp / 10 occurences[int(temp % 10)] += 1 temp = temp / 10 occurences[int(temp % 10)] += 1 temp = count if (occurences[int(temp % 10)] > temp_arr[int(temp % 10)]): continue temp = temp / 10 if (occurences[int(temp % 10)] > temp_arr[int(temp % 10)]): continue temp = temp / 10 if (occurences[int(temp % 10)] > temp_arr[int(temp % 10)]): continue return True return False if solve("4696984"): print("Divisible by eight") else: print("Not divisible by eight")
इनपुट
4696984
आउटपुट
Divisible by eight