একটি অ্যারে A দেওয়া আছে n উপাদানের সাথে। উপাদানগুলো রঙ করতে হবে এমনভাবে যে:
- যদি কোনো রঙ বিবেচনা করা হয়, তাহলে সেই রঙের সব উপাদান সেই রঙের ন্যূনতম উপাদান দিয়ে বিভাজ্য হতে হবে।
- ব্যবহৃত রঙের সংখ্যা ন্যূনতম রাখতে হবে।
সব সংখ্যা বৈধভাবে রঙ করার জন্য ন্যূনতম কতটি রঙ লাগবে তা বের করতে হবে।
উদাহরণ
A = [10, 2, 3, 5, 4, 2] → আউটপুট: 3
ব্যাখ্যা: প্রথম রঙে A[0] এবং A[3], دوم রঙে A[2], তৃতীয় রঙে বাকি তিনটি উপাদান।
সমাধানের ধাপসমূহ
n := A-এর সাইজ
ans := 0
sort(A)
for i := 0 to n-1:
ok := 1
for j := 0 to i-1:
ok := ok AND (A[i] % A[j] != 0)
ans += ok
return ans
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
int n = A.size(), ans = 0;
sort(A.begin(), A.end());
for (int i = 0; i < n; i++) {
int ok = 1;
for (int j = 0; j < i; j++)
ok &= (A[i] % A[j] != 0);
ans += ok;
}
return ans;
}
int main() {
vector<int> A = {10, 2, 3, 5, 4, 2};
cout << solve(A) << endl;
}
ইনপুট
{ 10, 2, 3, 5, 4, 2 }
আউটপুট
3