Computer >> Máy Tính >  >> Lập trình >> C ++

Tính thừa số tối thiểu trong C ++

Giả sử ta có số nguyên dương x, ta phải tìm số nguyên dương b nhỏ nhất mà phép nhân của mỗi chữ số với x. Nếu chúng tôi không có câu trả lời như vậy thì hãy trả về 0.

Vì vậy, nếu đầu vào là 48, thì đầu ra sẽ là 68

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ret:=0, mul:=1

  • nếu a <2, thì:

    • trả lại một

  • để khởi tạo i:=9, khi i> =2, cập nhật (giảm i đi 1), thực hiện -

    • trong khi một mod tôi giống 0, do -

      • ret:=i * mul + ret

      • mul:=mul * 10

      • a:=a / i

  • return (nếu a <2 và ret

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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));
}

Đầu vào

48

Đầu ra

68