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

0 голосов

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


спросил от (76 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Отличник (8.5k баллов)
 
Лучший ответ

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

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

оставил комментарий от (76 баллов)

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

оставил комментарий от (76 баллов)

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

оставил комментарий от Отличник (8.5k баллов)

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

оставил комментарий от (76 баллов)

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

...