Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Таблица умножения

(Время: 1 сек. Память: 16 Мб Сложность: 20%)

Для решения этой задачи следует завести массив-счетчик цифр из 10 элементов, который предварительно нужно обнулить. В результате мы хотим получить в элементе cnt[x] количество цифр х в рассматриваемой таблице умножения. Для этого будем перебирать все элементы таблицы и каждое рассматриваемое значение i*j (элемент i-й строки и j-го столбца) будем разбивать на цифры, увеличивая соответствующие элементы массива cnt. В результате заполним искомый массив и выведем его в качестве ответа.

Разбиение числа на цифры реализуется стандартно: извлекается последняя цифра x числа a (x = a mod 10), затем соответствующий элемент cnt[x] увеличивается на единицу, а последняя цифра из числа a удаляется (a = a div 10). Процесс продолжается до тех пор, пока a больше нуля.

Вышеизложенные размышления реализованы в следующем алгоритмическом коде:

  int cnt[0..9]={0}

  read(n, m)

  for i=1..n
    for j=1..m{
      a := i * j
      while(a > 0){
        cnt[a mod 10]++
        a = a div 10
      }
    }

  for i=0..9 writeln(cnt[i])

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru