কম্পিউটার টিউটোরিয়াল

C++-এ সংখ্যা থেকে একটি ডিজিট বাদ দিয়ে ৬ দিয়ে বিভাজ্য করার পজিশন বের করুন

একটি সংখ্যা দেওয়া আছে। একটাই ডিজিট বাদ দিয়ে নতুন সংখ্যা ৬ দিয়ে বিভাজ্য হয় এমন ডিজিটের পজিশন বের করতে হবে।

উদাহরণ: 1324 → ৪র্থ ডিজিট (৪) বাদ দিলে 132, যা ৬ দিয়ে বিভাজ্য। আউটপুট: ৪।

বিভাজ্যতার নিয়ম (২ ও ৩)
  • শেষ ডিজিট বিজোড় হলে: শুধু শেষ ডিজিট বাদ দিয়ে চেক করুন। নতুন শেষ ডিজিট জোড় এবং যোগফল ৩ দিয়ে বিভাজ্য হলে সমাধান।
  • শেষ ডিজিট জোড় হলে: পুরো সংখ্যা ৩ দিয়ে ভাগ করে ভাগশেষ বের করুন। ভাগশেষ ১ হলে ১,৪,৭; ২ হলে ২,৫,৮; ০ হলে ৩,৬,৯ — এই ডিজিটগুলো থেকে যেটি বাদ দিলে সর্বোচ্চ সংখ্যা হয় সেটি বাদ দিন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;

void isDivisibleBy6(string num) {
    int n = num.length();
    int a[n];
    int sum = 0;
    for (int i = 0; i < n; i++) {
        a[i] = num[i] - '0';
        sum += a[i];
    }
    if (a[n-1] % 2) { // last digit odd
        if ((a[n-2] % 2 != 0) || (sum - a[n-1]) % 3 != 0)
            cout << "-1" << endl;
        else
            cout << n << endl;
    } else { // last digit even
        int re = sum % 3;
        int del = -1;
        int flag = 0;
        for (int i = 0; i < n - 1; i++) {
            if (a[i] % 3 == re) {
                if (a[i+1] > a[i]) { del = i; flag = 1; break; }
                else del = i;
            }
        }
        if (flag == 0) {
            if (a[n-2] % 2 == 0 && re == a[n-1] % 3)
                del = n - 1;
        }
        if (del == -1) cout << -1 << endl;
        else cout << del + 1 << endl;
    }
}

int main() {
    string number = "343224152";
    isDivisibleBy6(number);
    return 0;
}
আউটপুট
5
  1. K ডিজিটের সর্বোচ্চ সংখ্যা যা X দিয়ে বিভাজ্য (C++)

  2. C++-এ ছোট K-অঙ্কের সংখ্যা যা X দ্বারা বিভাজ্য (Smallest K digit number divisible by X)

  3. C++-এ বড় K-অঙ্কের সংখ্যা যা X দ্বারা বিভাজ্য (Largest K digit number divisible by X)

  4. C++-এ ছোট K-অঙ্কের সংখ্যা যা X দ্বারা বিভাজ্য (Smallest K digit number divisible by X)