आपको स्ट्रिंग में एक नंबर दिया गया है। आपको 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