मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक 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