Задача:Вывести числа до N, которые делятся ** сумму своих цифр. написать программу **...

0 голосов
22 просмотров

Задача:Вывести числа до N, которые делятся на сумму своих цифр.
написать программу на языке СИ


Информатика (76 баллов) | 22 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

// Возможно, это работает

#include

int main()
{
 int x,s,l,n;
 scanf("%d", &n);
 do{
 s = 0;   
 for(x = 1; x <= n; x++)<br>   {
   s += 1;
   l = 10;
   while(x % l == 0){s -= 9; l *= 10;};
   if(x % s == 0) printf("%d ",x);    
   };
 printf("\n");
 scanf("%d", &n);
} while(n > 0);       
}

(8.5k баллов)
0

спасибо большое,а не могли бы дать краткий комментарий по этой программе?) что именно и где вы делаете

0

for функция ясна,а вот while не очень

0

Вообще, можно было бы написать функцию, которая считала бы сумму цифр, но мне показалось, что так интереснее.
Идея в том, что при увеличении числа на 1, если оно не оканчивается на 9, сумма цифр тоже увеличивается на 1. Если же число оканчивается на 9, то единица все равно прибавляется, просто к другому разряду, но последние девятки обращаются в 0, так что нам надо вычесть их из суммы цифр.
Цикл while считает количество нулей в конце числа (количество девяток, обратившихся в 0) и вычитает их

0

спасибо за ответ)