%I #23 Jan 09 2023 10:41:37
%S 1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,1,1,1,0,2,0,1,1,1,0,1,0,
%T 1,1,0,0,2,0,1,1,1,0,1,1,1,1,0,0,3,0,0,0,1,1,1,0,1,0,2,0,2,0,0,1,1,1,
%U 1,0,2,0,0,0,2,1,0,0,1,0,3,1,0,0,0,1,2,0,1,1,1,0,1,0,1,1,0,0,2,0,2,1,3
%N Number of m such that m + (product of digits of m) equals n.
%C Number of times n appears in A230099.
%H Michel Marcus, <a href="/A230103/b230103.txt">Table of n, a(n) for n = 0..10000</a>
%H <a href="/index/Coi#Colombian">Index entries for Colombian or self numbers and related sequences</a>
%p # Maple code for A230099, A230103, A230104, A230105
%p with(LinearAlgebra):
%p read transforms; # to get digprod
%p M:=1000;
%p lis1:=Array(0..M);
%p lis2:=Array(0..M);
%p ctmax:=4;
%p for i from 0 to ctmax do ct[i]:=Array(0..M); od:
%p for n from 0 to M do
%p m:=n+digprod(n);
%p lis1[n]:=m;
%p if (m <= M) then lis2[m]:=lis2[m]+1; fi;
%p od:
%p t1:=[seq(lis1[i],i=0..M)]; # A230099
%p t2:=[seq(lis2[i],i=0..M)]; # A230103
%p COMPl(t1); # A230104
%p for i from 1 to M do h:=lis2[i];
%p if h <= ctmax then ct[h]:=[op(ct[h]),i]; fi; od:
%p len:=nops(ct[0]); [seq(ct[0][i],i=1..len)]; # A230104 again
%p len:=nops(ct[1]); [seq(ct[1][i],i=1..len)]; # A230105
%o (PARI) a(n) = if (n==0, return(1)); sum(k=1, n, k+vecprod(digits(k)) == n); \\ _Michel Marcus_, Sep 18 2020
%o (Python)
%o from math import prod
%o def b(n): return n + prod(map(int, str(n)))
%o def a(n): return sum(1 for m in range(n+1) if b(m) == n)
%o print([a(n) for n in range(103)]) # _Michael S. Branicky_, Jan 09 2023
%o (Python) # faster version for initial segment of sequence
%o from math import prod
%o from collections import Counter
%o def b(n): return n + prod(map(int, str(n)))
%o def aupto(n):
%o c = Counter(b(m) for m in range(n+1))
%o return [c[k] for k in range(n+1)]
%o print(aupto(102)) # _Michael S. Branicky_, Jan 09 2023
%Y Cf. A230099, A230104.
%K nonn,base
%O 0,11
%A _N. J. A. Sloane_, Oct 13 2013