मान लीजिए हमारे पास टेक्स्ट एडिटर में केवल एक अक्षर 'ए' है। हम प्रत्येक चरण के लिए इस पत्र पर दो ऑपरेशन कर सकते हैं -
- सभी को कॉपी करें - हम नोटपैड पर मौजूद सभी वर्णों को कॉपी कर सकते हैं
- पेस्ट - हम पिछली बार कॉपी किए गए अक्षरों को पेस्ट कर सकते हैं।
अब मान लीजिए कि हमारे पास एक संख्या n है। हमें अनुमत चरणों की न्यूनतम संख्या का प्रदर्शन करके नोटपैड पर बिल्कुल n 'A' प्राप्त करना होगा। हमें n 'A' प्राप्त करने के लिए न्यूनतम चरणों में परिणाम ज्ञात करना होगा। तो यदि दिया गया n 3 है, तो उत्तर 3 होगा, इसलिए शुरू में केवल एक "A" है, अब इसे कॉपी करें और इसे पेस्ट करें, इसलिए अब "AA" होगा। अब हम दोबारा पेस्ट कर सकते हैं, इसलिए एक 'ए' रखा जाएगा। इस प्रकार हमें "एएए" मिलेगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- रिट:=0
- k के लिए 2 से n के बीच
- जबकि n mod k 0 नहीं है
- ret:=ret + k and n:=n / k
- जबकि n mod k 0 नहीं है
- रिटर्न रिटर्न
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; class Solution { public: int minSteps(int n) { int ret = 0; for(int k = 2; k <= n; k++){ for(; n % k == 0; ret += k, n /= k); } return ret; } }; main(){ Solution ob; cout << (ob.minSteps(10)); }
इनपुट
10
आउटपुट
7