मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक x है, हमें सबसे छोटा धनात्मक पूर्णांक b ज्ञात करना है, जिसके प्रत्येक अंक का गुणन x के बराबर हो। अगर हमारे पास ऐसा कोई जवाब नहीं है तो 0 वापस करें।
तो, अगर इनपुट 48 जैसा है, तो आउटपुट 68 होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रिट:=0, मूल:=1
-
अगर एक <2, तो:
-
वापसी एक
-
-
इनिशियलाइज़ i :=9 के लिए, जब i>=2, अपडेट करें (i से 1 घटाएं), करें -
-
जबकि एक मॉड मैं 0 के समान है, करें -
-
रिट :=i * mul + ret
-
मूल:=मूल * 10
-
ए:=ए / आई
-
-
-
वापसी (यदि a <2 और ret
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; typedef long long int lli; class Solution { public: int smallestFactorization(int a) { lli ret = 0; lli mul = 1; if (a < 2) return a; for (lli i = 9; i >= 2; i--) { while (a % i == 0) { ret = i * mul + ret; mul *= 10; a /= i; } } return a < 2 && ret < INT_MAX ? ret : 0; } }; main(){ Solution ob; cout << (ob.smallestFactorization(48)); }
इनपुट
48
आउटपुट
68