এই সমস্যায়, আমাদের একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া হয়েছে। আমাদের কাজ হল একটি সংখ্যার ভদ্রতা খুঁজে বের করা।
ভদ্র নম্বর একটি সংখ্যা যা দুই বা ততোধিক ধারাবাহিক সংখ্যার যোগফল হিসাবে প্রকাশ করা যেতে পারে।
একটি সংখ্যার ভদ্রতা সংখ্যাটিকে ধারাবাহিক পূর্ণসংখ্যার যোগফল হিসাবে প্রকাশ করার উপায় হিসাবে সংজ্ঞায়িত করা হয়৷
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
n = 5
আউটপুট
1
ব্যাখ্যা
2 + 3 = 5, is the only consecutive sum.
সমাধান পদ্ধতি
সমস্যার একটি সহজ সমাধান হল N পর্যন্ত পরপর সমস্ত সংখ্যা পরীক্ষা করা এবং যদি তাদের যোগফল N এর সমান হয়, তাহলে সংখ্যা বৃদ্ধি করুন যা সংখ্যাটির ভদ্রতা।
এই সমাধানটি কার্যকর নয় কিন্তু একটি জটিল কিন্তু দক্ষ সমাধান ফ্যাক্টরাইজেশন ব্যবহার করছে। ভদ্রতার জন্য সূত্র ব্যবহার করা যা বিজোড় কারণের গণনার ফল হতে পারে অর্থাৎ
If the number is represented as N = ax * by * cz… Politeness = [(x + 1)*(y +1)*(z + 1)... ] - 1
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include <iostream> using namespace std; int calcPolitenessNumber(int n){ int politeness = 1; while (n % 2 == 0) n /= 2; for (int i = 3; i * i <= n; i += 2) { int divCount = 0; while (n % i == 0) { n /= i; ++divCount; } politeness *= divCount + 1; } if (n > 2) politeness *= 2; return (politeness - 1); } int main(){ int n = 13; cout<<"Politeness of "<<n<<" is "<<calcPolitenessNumber(n); return 0; }
আউটপুট
Politeness of 13 is 1