OFFSET
0,3
LINKS
Peter Luschny, C Implementation.
MAPLE
a := n -> local j; add(modp(binomial(n, j), 8), j=0..n) / 2^add(convert(n, base, 2)): seq(a(n), n = 0..75);
MATHEMATICA
Table[Sum[Mod[Binomial[n, k], 8], {k, 0, n}]/2^DigitCount[n, 2, 1], {n, 0, 80}]
(* Michael De Vlieger, Jun 27 2025 *)
pca[L_] := DigitCount[BitAnd @@ L, 2, 1]
A385394[n_] := Module[{s, n1, n2, n3, np, n1p, b100, b10, b110, b11, b1111, b101, b1100, m11, c},
If[n == 0, Return[1]];
n1 = BitShiftRight[n, 1]; n2 = BitShiftRight[n, 2]; n3 = BitShiftRight[n, 3];
np = BitNot[n]; n1p = BitNot[n1];
b1111 = pca[{n, n1, n2, n3}]; b11 = pca[{n, n1}]; b101 = pca[{n, n2, n1p}]; b100 = pca[{np, n2, n1p}]; b110 = pca[{n2, n1, np}]; b10 = pca[{n1, np}]; b1100 = pca[{n3, n2, n1p, np}];
s = "0" <> IntegerString[n, 2]; m11 = StringCount[s, "0110"];
c = BitShiftLeft[b100, 2] + b110 + BitShiftRight[b10 (b10 - 1), 1];
c += Switch[b11,
0, b10 + BitShiftLeft[b100, 1],
1, BitShiftLeft[b10 - b1100, 1] + b110,
_, BitShiftLeft[b10, 1] ];
c += Which[
b1111 == 0 && b11 == 0 && b101 == 0, 1,
b1111 == 0 && b11 == 0 && b101 != 0, 3,
StringEndsQ[s, "0111"], 4,
b1111 == 0 && b101 == 0 && m11 == 0 && b11 != 0, 2,
True, 4]; c]
PROG
(PARI) a(n) = sum(k=0, n, binomial(n, k) % 8) / 2^hammingweight(n); \\ Michel Marcus, Jun 28 2025
(Python)
def A385394(n):
if n==0: return 1
s = '0'+bin(n)[2:]
n1 = n>>1
n2 = n1>>1
n3 = n2>>1
np = ~n
n1p = ~n1
n1111 = (n3&n2&n1&n).bit_count()
n11 = (n1&n).bit_count()
n101 = (n2&n1p&n).bit_count()
n100 = (n2&n1p&np).bit_count()
n110 = (n2&n1&np).bit_count()
n10 = (n1&np).bit_count()
n1100 = (n3&n2&n1p&np).bit_count()
m11 = s.count('0110')
m111 = s.endswith('0111')
c = (n100<<2)+n110+(n10*(n10-1)>>1)
if n11==0:
c += n10+(n100<<1)
elif n11==1:
c += (n10-n1100<<1)+n110
else:
c += n10<<1
if not (n1111 or n11 or n101):
c += 1
elif not (n1111 or n11) and n101:
c += 3
elif m111:
c += 4
elif not (n1111 or n101 or m11) and n11:
c += 2
else:
c += 4
return c # Chai Wah Wu, Jun 28 2025
CROSSREFS
KEYWORD
nonn
AUTHOR
Peter Luschny, Jun 27 2025
STATUS
approved
