সমস্যা বিবরণ
একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হল N-এর ভাজকগুলোর মধ্যে সবচেয়ে বড় Good Number বের করা।
Good Number: যেটির প্রতিটি ডিজিট তার ডানপাশের সব ডিজিটের যোগফলের চেয়ে বড়। যেমন 732: 7>3+2, 3>2।
উদাহরণ
ইনপুট: N = 15 আউটপুট: 15 ব্যাখ্যা: 15-এর ভাজক: 1,3,5,15। সবচেয়ে বড় Good Number 15।
সমাধানের পদ্ধতি
N-এর সব প্রাইম ফ্যাক্টরের গুণফলই সবচেয়ে বড় Good Number। কারণ প্রাইম ফ্যাক্টরগুলোর গুণফল সব ভাজক তৈরি করে এবং সেটিই সর্বোচ্চ হয়।
প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int findLargestGoodNumber(int n) {
vector<int> pf;
int x=n;
for(int i=2;i*i<=n;i++)
if(x%i==0){
pf.push_back(i);
while(x%i==0) x/=i;
}
if(x>1) pf.push_back(x);
int ans=1;
for(int p:pf) ans*=p;
return ans;
}
int main() {
cout << findLargestGoodNumber(28); // 14
return 0;
}
আউটপুট
14