Таблица умножения
(Время: 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])
|