এই সমস্যায়, আমাদের তিনটি মান A, B এবং N দেওয়া আছে। আমাদের কাজ হল দেওয়া সমীকরণগুলোকে সन्तুষ্টকারী n ধনাত্মক পূর্ণসংখ্যা খুঁজে বের করা।
সমস্যা বর্ণনা - আমাদের N সংখ্যক ধনাত্মক মান বের করতে হবে যা দুটি সমীকরণ সन्तুষ্ট করে:
x1² + x2² + … + xn² ≥ A x1 + x2 + … + xn ≤ B
যদি মানগুলো থাকে তবে প্রিন্ট করুন, অন্যথায় -১ প্রিন্ট করুন।
উদাহরণ
ইনপুট
N = 4, A = 65, B = 16
আউটপুট
1 1 1 8
ব্যাখ্যা
সমীকরণগুলো: 1² + 1² + 1² + 8² = 1 + 1 + 1 + 64 = 67 ≥ 65 1 + 1 + 1 + 8 = 11 < 16
সমাধানের পদ্ধতি
এই সমস্যার সহজ সমাধান হল বর্গ যোগফল ম্যাক্সিমাইজ করা। আইডিয়া হল একটি নম্বরকে প্রাইমারি নম্বর হিসেবে ব্যবহার করা বর্গ যোগফল ম্যাক্সিমাইজ করতে এবং অন্যদের ১ রাখা। এভাবে বর্গ যোগফল ম্যাক্সিমাইজ করা যায় এবং যোগফল শর্তও সन्तুষ্ট হয়।
প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void findNIntegers(int N, int A, int B) {
vector<int> numbers;
for (int i = 0; i < N - 1; i++)
numbers.push_back(1);
if (B - (N - 1) <= 0) {
cout << "-1";
return;
}
numbers.push_back(B - (N - 1));
int vals = 0;
for (int i = 0; i < N; i++)
vals += numbers[i] * numbers[i];
if (vals < A) {
cout << "-1";
return;
}
for (int i = 0; i < N; i++)
cout << numbers[i] << " ";
}
int main() {
int N = 4, A = 65, B = 17;
cout << N << " positive integers that satisfy the given equations are ";
findNIntegers(N, A, B);
return 0;
}
আউটপুট
4 positive integers that satisfy the given equations are 1 1 1 14