এই সমস্যায় দুটি পূর্ণসংখ্যা N এবং D দেওয়া আছে। আমাদের কাজ হলো প্রথম N প্রাকৃতিক সংখ্যাগুলো থেকে দুটি সেট তৈরি করা যাতে তাদের যোগফলের পার্থক্য D হয়।
উদাহরণ
ইনপুট: N = 5, D = 3
আউটপুট: হ্যাঁ
ব্যাখ্যা: 1, 2, 3, 4, 5 সংখ্যাগুলো থেকে set1 = {1, 2, 3} এবং set2 = {4, 5} বানানো যায়। তখন পার্থক্য = (4+5) - (1+2+3) = 9 - 6 = 3।
গাণিতিক সমাধান
প্রথম N প্রাকৃতিক সংখ্যার যোগফল = n(n+1)/2।
দুটি সেটের যোগফল যথাক্রমে sum(s1) এবং sum(s2)।
তবে sum(s1) + sum(s2) = n(n+1)/2
এবং দেওয়া আছে sum(s1) - sum(s2) = D
দুটি সমীকরণ যোগ করলে: 2 × sum(s1) = n(n+1)/2 + D
অতএব, সমাধান সম্ভব হবে যদি এবং কেবল যদি [n(n+1)/2 + D] সম সংখ্যা হয়।
C++ প্রোগ্রাম
#include <iostream>
using namespace std;
bool isSetPossible(int N, int D) {
int total = (N * (N + 1)) / 2 + D;
return (total % 2 == 0);
}
int main() {
int N = 10;
int D = 7;
cout << "প্রথম " << N << " প্রাকৃতিক সংখ্যা থেকে পার্থক্য " << D << " সহ দুটি সেট বানানো ";
isSetPossible(N, D) ? cout << "সম্ভব" : cout << "সম্ভব নয়";
return 0;
}
আউটপুট
প্রথম 10 প্রাকৃতিক সংখ্যা থেকে পার্থক্য 7 সহ দুটি সেট বানানো সম্ভব