найти минимальное число, большее данного, такое что оно делиться на произведение своих цифр без остатка
Перепробовал что мог , всё равно не проходит , может кто подсказать в чём проблема?или найти решение
#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;
}
}