1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import sys

data = sys.stdin.read().strip().split("\n")
t = int(data[0])
x = [int(a) for a in data[1].split(' ')]
end = max(x)

multipliers: dict = {}

def multiply(num: int) -> int:
    r = 1
    for a in str(num):
        r *= int(a)
    return r

def solve(x: list[int], end: int) -> str:
    result: dict = {}
    all_nums = [0] * 10
    i = 1
    while i <= end:
        val = i
        all_vals = []
        while len(str(val)) > 1:
            if val in multipliers.keys():
                val = multipliers[val]
                break
            all_vals.append(val)
            val = multiply(val)
        for vals in all_vals:
            multipliers.setdefault(vals, val)
        all_nums[val] += 1
        if i in x:
            result.setdefault(i, all_nums.copy())
        i += 1
    for r in x:
        print(" ".join([str(a) for a in result[r]]))
        

solve(x, end)