C++ 中的最小因子分解
假設我們有一個正整數 x,我們必須找到一個最小的正整數 b,其每一位數字的乘積等於 x。如果我們沒有這樣的答案,則返回 0。
所以,如果輸入為 48,那麼輸出將為 68
為了解決這個問題,我們將按照以下步驟進行 -
ret:= 0,mul:= 1
如果 a < 2,那麼
返回 a
對於初始化 i:= 9,當 i >= 2 時,更新(將 i 減 1),執行 -
當 a 除以 i 等於 0 時,執行 -
ret:= i * mul + ret
mul:= mul * 10
a:= a / i
返回(如果 a < 2 且 ret < 無限大,則返回 ret,否則返回 0)
示例
讓我們看看以下實現,以便更好地理解 -
#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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP