найти минимальное число, большее данного, такое что оно делиться на произведение своих цифр без остатка

Перепробовал что мог , всё равно не проходит , может кто подсказать в чём проблема?или найти решение

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int x, s, d, g, f, j = 0;
    scanf("%d", &x);
    s = x / 100; //сотни
    g = x % 100;
    d = g / 10; // десятки
    f = x % 10; // еденицы 
    if ((s < 10) && (d == 0 && f == 0))
    {
        j = s;
        printf("%d", x);
        return(0);
    }
    if (s < 10 && (d < 10 && f < 10))
    {
        j = s * d * f;
    }
    if ((s < 10) && (d < 10 && f == 0))
    {
        j = s * d;
    }
    if ((s < 10) && (d == 0 && f < 10))
    {
        j = s * f;
    }
    if (s == 0 && d < 10 && f < 10)
    {
        j = d * f;
    }
    if (s == 0 && d < 10 && f == 0)
    {
        j = d;
    }
    if (x <= 10)
    {
        x = x + 1;
        printf("%d", x);
        return(0);
    }
    x = x + 1;
    while (x % j != 0) {
        x++;
    }
    printf("%d", x);
}

Ответы (1 шт):

Автор решения: Mikhailo

Попробуйте так:

int main() {
    int x;
    scanf("%d", &x);

    for (++x;;x++) {
        int n = x, p = 1;

        while (n) {
            p *= n % 10;
            n /= 10;
            }

        if (p == 0 || x % p) continue;

        printf("%d\n", x);
        break;
        }
    }
→ Ссылка