আপনি স্ট্রিং একটি সংখ্যা দেওয়া হয়. এটিকে 3 দ্বারা বিভাজ্য করার জন্য আপনাকে কয়টি সংখ্যা অপসারণ করতে হবে তা খুঁজে বের করতে হবে।
আমরা সর্বাধিক 2 সংখ্যাগুলি সরিয়ে একটি সংখ্যাকে বিভাজ্য করি। সুতরাং, এটিকে 3 দ্বারা বিভাজ্য করার জন্য সর্বাধিক সংখ্যাটি বাদ দিতে হবে।
আসুন কিছু উদাহরণ দেখি।
ইনপুট
92
আউটপুট
1
3 দ্বারা বিভাজ্য করার জন্য আমরা 2কে সরিয়ে দিতে পারি।
ইনপুট
999
আউটপুট
0
প্রদত্ত সংখ্যাটি নিজেই 3 দ্বারা বিভাজ্য।
অ্যালগরিদম
-
স্ট্রিং-এ সংখ্যাটি শুরু করুন।
-
সংখ্যার যোগফল খুঁজুন।
-
যদি যোগফল 3 দ্বারা বিভাজ্য হয়, তাহলে 0। ফেরত দিন
-
যদি যোগফলটি 3 দ্বারা বিভাজ্য না হয় এবং সংখ্যাটির দৈর্ঘ্য 1 হয়, তবে আমরা এটিকে 3 দ্বারা বিভাজ্য করতে পারি না৷ -1 ফেরত দিন .
-
সংখ্যার উপর পুনরাবৃত্তি করুন।
-
সংখ্যা থেকে একটি সংখ্যা সরান এবং বিভাজ্যতা পরীক্ষা করুন।
-
যদি উপরের শর্তটি সন্তুষ্ট হয়, তাহলে 1. ফেরত দিন
-
-
সংখ্যাটির দৈর্ঘ্য আবার পরীক্ষা করুন। যদি দৈর্ঘ্য 2, হয় তারপর -1. ফিরুন
-
অন্যথায় 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