একটি সংখ্যা দেওয়া আছে। একটাই ডিজিট বাদ দিয়ে নতুন সংখ্যা ৬ দিয়ে বিভাজ্য হয় এমন ডিজিটের পজিশন বের করতে হবে।
উদাহরণ: 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