आपको स्ट्रिंग में एक नंबर दिया गया है। आपको 3 से विभाज्य बनाने के लिए कितने अंकों को निकालने की आवश्यकता है, इसका पता लगाने की आवश्यकता है।
हम अधिकतम 2 अंकों को हटाकर एक संख्या को विभाज्य बनाते हैं। इसलिए, इसे 3 से विभाज्य बनाने के लिए हटाए जाने वाले अंकों की अधिकतम संख्या 2 है।
आइए कुछ उदाहरण देखें।
इनपुट
92
आउटपुट
1
हम इसे 3 से विभाज्य बनाने के लिए 2 को हटा सकते हैं।
इनपुट
999
आउटपुट
0
दी गई संख्या स्वयं 3 से विभाज्य है।
एल्गोरिदम
-
संख्या को स्ट्रिंग में प्रारंभ करें।
-
संख्या का योग ज्ञात कीजिए।
-
अगर योग 3 से विभाज्य है, तो 0. . लौटाएं
-
यदि योग 3 से विभाज्य नहीं है और संख्या की लंबाई 1 है, तो हम इसे 3 से विभाज्य नहीं बना सकते। वापसी -1 ।
-
संख्या पर पुनरावृति करें।
-
संख्या में से एक अंक निकालें और विभाज्यता की जांच करें।
-
अगर ऊपर दी गई शर्त पूरी होती है, तो 1. return लौटाएं
-
-
संख्या की लंबाई फिर से जांचें। अगर लंबाई 2, . है फिर -1. return पर लौटें
-
अन्य वापसी 2.
कार्यान्वयन
C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है
#include <bits/stdc++.h> using namespace std; int getNumSum(string n) { int len = n.length(), sum = 0; for (int i = 0; i < len; i++) { sum += (int)n[i]; } return sum; } int getDigitsCount(string num) { int n = num.length(); int sum = getNumSum(num); if (sum % 3 == 0) { return 0; } if (n == 1) { return -1; } for (int i = 0; i < n; i++) { int currentDigit = num[i] - '0'; if (sum % 3 == currentDigit % 3) { return 1; } } if (n == 2) { return -1; } return 2; } int main() { string num = "7536836"; cout << getDigitsCount(num) << endl; return 0; }
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
1