मान लीजिए एक टेक्स्ट एडिटर में केवल एक वर्ण 'A' है। हम प्रत्येक चरण में इस अक्षर पर दो संचालन कर सकते हैं:
- कॉपी ऑल - हम नोटपैड पर मौजूद सभी वर्णों को कॉपी कर सकते हैं
- पेस्ट - हम अंतिम बार कॉपी किए गए वर्णों को पेस्ट कर सकते हैं।
अब मान लीजिए हमारे पास एक संख्या n है। हमें अनुमत न्यूनतम चरणों में नोटपैड पर ठीक n 'A' प्राप्त करने हैं। हमें n 'A' प्राप्त करने के लिए न्यूनतम चरणों में परिणाम ढूंढना है। इसलिए यदि दिया गया n = 3 है, तो उत्तर 3 होगा। शुरू में केवल एक "A" है, अब इसे कॉपी करें और पेस्ट करें, तो "AA" हो जाएगा। अब हम फिर से पेस्ट कर सकते हैं, तो एक 'A' और जुड़ जाएगा। इस प्रकार हमें "AAA" मिलेगा।
हल का दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
ret := 0k = 2 से nतक:while n % k != 0:ret := ret + kऔरn := n / k
retलौटाएं
उदाहरण
#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;
}
};
int main(){
Solution ob;
cout << (ob.minSteps(10));
}
इनपुट
10
आउटपुट
7