টাস্ক হলো একটি সংখ্যা N-এর চারটি ফ্যাক্টর A, B, C, D থেকে সর্বোচ্চ গুণফল বের করা, শর্তে N = A + B + C + D।
ইনপুট − N=10
আউটপুট − 20
ব্যাখ্যা − ১০-এর ফ্যাক্টর: ১, ২, ৫, ১০। সর্বোচ্চ গুণফল: ৫×২×২×১=২০ এবং যোগফল ৫+২+২+১=১০।
ইনপুট − N=16
আউটপুট − 256
ব্যাখ্যা − ১৬-এর ফ্যাক্টর: ১, ২, ৪, ৮, ১৬। সর্বোচ্চ গুণফল: ৪×৪×৪×৪=২৫৬ এবং যোগফল ৪+৪+৪+৪=১৬।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
Factors[]অ্যারে দিয়ে ফ্যাক্টরগুলো সংরক্ষণ করুন,Kদিয়ে সাইজ ট্র্যাক করুন।FindFactors()ফাংশনে ১ থেকে sqrt(N) পর্যন্ত লুপ চালিয়ে ফ্যাক্টর বের করুন।- যদি
N%i==0হয়, তবেiএবংN/iদুটোই ফ্যাক্টর (যদি সমান না হয়)। Product()ফাংশনে চারটি নেস্টেড লুপ দিয়ে সব কোম্বিনেশন চেক করুন।- যদি চার ফ্যাক্টরের যোগফল N হয়, তবে গুণফল বের করে সর্বোচ্চটি রাখুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int Factors[30];
int K = 0;
int FindFactors(int N) {
for (int i = 1; i * i <= N; i++) {
if (N % i == 0) {
if ((N / i) == i) {
Factors[K++] = i;
} else {
Factors[K++] = N / i;
Factors[K++] = i;
}
}
}
}
int Product(int N) {
int product = 0;
int size = K;
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
for (int k = 0; k < size; k++)
for (int l = 0; l < size; l++) {
int sum = Factors[i] + Factors[j] + Factors[k] + Factors[l];
if (sum == N) {
int pro = Factors[i] * Factors[j] * Factors[k] * Factors[l];
if (pro > product) product = pro;
}
}
return product;
}
int main() {
int N = 10;
FindFactors(N);
cout << Product(N);
return 0;
}
আউটপুট
20