কম্পিউটার

একটি সংখ্যাকে C++ এ 3 দ্বারা বিভাজ্য করতে ডিজিটের সংখ্যা অপসারণ করতে হবে


আপনি স্ট্রিং একটি সংখ্যা দেওয়া হয়. এটিকে 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

  1. একটি সংখ্যা 41 দ্বারা বিভাজ্য বা C++ এ নয় তা পরীক্ষা করুন

  2. একটি সংখ্যা 23 দ্বারা বিভাজ্য বা C++ এ নয় তা পরীক্ষা করুন

  3. একটি বড় সংখ্যা C++ এ 20 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন

  4. A-তে N সংখ্যা যোগ করুন যাতে C++ এ প্রতিটি যোগের পর B দ্বারা বিভাজ্য হয়?