10922. Степень девятки

 

Известно, что число делится на 9, если его сумма цифр делится на 9. В задаче требуется определить, на какую степень девятки делится заданное число n.

 

Вход. Каждая строка содержит число, состоящее из не более чем 1000 цифр. Последнее число равно 0 и не обрабатывается.

 

Выход. Для каждого числа выяснить, делится ли оно на 9. Если делится, то найти степень девятки, на которую делится число. Результат выводить согласно формату, приведенному в примере.

 

Пример входа

999999999999999999999

9

9999999999999999999999999999998

0

 

Пример выхода

999999999999999999999 is a multiple of 9 and has 9-degree 3.

9 is a multiple of 9 and has 9-degree 1.

9999999999999999999999999999998 is not a multiple of 9.

 

 

РЕШЕНИЕ

элементарные вычисления

 

Анализ алгоритма

Вычисляем сумму цифр sum входного числа. Если она не делится на 9, то и число не делится на 9. Иначе в цикле пока sum делится на 9, присваиваем переменной sum сумму его цифр. Количество итераций цикла равно степени девятки, на которую делится входное число.

 

Реализация алгоритма

Входное число храним в массиве s.

 

char s[1001];

 

Функция check возвращает сумму цифр числа s.

 

int check(int s)

{

  int res = 0;

  while (s > 0)

  {

    res += s % 10;

    s /= 10;

  }

  return res;

}

 

Основной цикл программы. Вводим число, в переменной sum находим его сумму цифр.

 

while(gets(s),s[0]!='0')

{

  for(sum=i=0;i<(int)strlen(s);i++)

  sum += (s[i] - '0');

 

Если сумма цифр sum не делится на 9, то и число не делится на 9.

 

  if (sum % 9 > 0)

  {

    printf("%s is not a multiple of 9.\n",s);

    continue;

  }

 

В переменной count храним степень девятки, на которую делится тестируемое число. Пока сумма цифр числа sum делится на 9, присваиваем переменной sum ее сумму цифр. Количество проведенных итераций count равно искомой степени девятки, на которую делится входное число.

 

  count = 1;

  while(sum > 9)

  {

    sum = check(sum);

    count++;

  }

 

Выводим результат.

 

  printf("%s is a multiple of 9 and has 9-degree %d.\n",s,count);

}