Найдите наименьшее число, цифры которого умножаются на заданное число
(новичок здесь)
Моя задача состоит в том, чтобы найти наименьшее число, цифры которого умножаются на заданное число. Если такое число не может быть сделано, выведите "-1"
Пример:
10 = 25 2*5=10<br /> 13 = -1 <br /> 5 = 5 <br /> 100 = 455 4*5*5 = 100
входное значение-это одно число n;
0 <= n <= 10^9
Мой код, кажется, работает нормально, но всякий раз, когда я пытаюсь загрузить его на сайт конкурса, мой код не проходит все тестовые случаи. Все тестовые случаи скрыты, поэтому я не знаю конкретного тестового случая, когда мой код терпит неудачу.
Поэтому я хотел попросить о помощи, я хочу знать, как я могу найти этот конкретный тестовый случай или даже лучше помочь мне найти этот тестовый случай.
Мой код основан на коде с этих сайтов:
Наименьшее число k такое, что произведение цифр k равно n - GeeksforGeeks[^]
Найдите наименьшее число, цифры которого умножаются на заданное число n - GeeksforGeeks[^]
Мой код:
#include <iostream> #include <stack> using namespace std; // function to find smallest number k such that // the product of digits of k is equal to n long long int smallestNumber(long long int n) { // if 'n' is a single digit number, then // it is the required number if (n >= 0 && n <= 9) return n; // stack the store the the digits stack<long long int> digits; // repeatedly divide 'n' by the numbers // from 9 to 2 until all the numbers are // used or 'n' > 1 for (long long int i = 9; i >= 2 && n > 1; i--) { while (n % i == 0) { // save the digit 'i' that divides 'n' // onto the stack digits.push(i); n = n / i; } } // if true, then no number 'k' can be formed if (n != 1) return -1; // pop digits from the stack 'digits' // and add them to 'k' long long int k = 0; while (!digits.empty()) { k = k * 10 + digits.top(); digits.pop(); } // required smallest number return k; } // Driver program to test above int main() { long long int n;//number i want to convert cin >> n; cout << smallestNumber(n); return 0; }
Спасибо.
Что я уже пробовал:
Я пробовал числа от 1 до 1000000 и все они, кажется, работают нормально
Rick York
Обратите внимание, что два требования, на которые вы ссылаетесь, также отличаются друг от друга. В одном из них допускается один раз простое число. В других это не так. Я видел эту проблему опубликованной много, много раз, и я видел только один случай, когда один раз простое число разрешено.