OFFSET
0,6
COMMENTS
By convention, a(0) = 0.
For any n > 0: let (b_0, ..., b_w) be the binary representation of n:
- b_w = 1, and for any k = 0..w, 0 <= b_k <= 1,
- n = Sum_{k = 0..w} b_k * 2^k,
- a(n) is the unique value remaining after taking successively the first differences of (b_0, ..., b_w) w times.
From Robert Israel, Mar 07 2019: (Start)
In particular, if n is in A048701 then a(n)=0.
LINKS
Robert Israel, Table of n, a(n) for n = 0..10000
FORMULA
a(2^k) = 1 for any k >= 0.
a(2^k-1) = 0 for any k > 1.
a(3*2^k) = -k for any k >= 0.
a(n) = Sum_{k=0..A000523(n)} binomial(A000523(n), k)*(-1)^k*A030302(n,k). - David A. Corneth, Mar 07 2019
G.f.: 1/(x-1)*Sum_{k>=0}(x^(2^(k+1))-x^(2^k) + x^(2^k)/(x^(2^k)+1)*Sum_{m>=k+1}(binomial(m,k)*(-1)^(m-k)*(x^(2^(m+1))-x^(2^m)))). - Robert Israel, Mar 07 2019
EXAMPLE
For n = 42:
- the binary representation of 42 is "101010",
- the corresponding difference table is:
0 1 0 1 0 1
1 -1 1 -1 1
-2 2 -2 2
4 -4 4
-8 8
16
- hence a(42) = 16.
MAPLE
f:= proc(n) local L;
L:= convert(n, base, 2);
while nops(L) > 1 do
L:= L[2..-1]-L[1..-2]
od;
op(L)
end proc:
map(f, [$0..100]); # Robert Israel, Mar 07 2019
MATHEMATICA
a[n_] := NestWhile[Differences, Reverse[IntegerDigits[n, 2]], Length[#] > 1 &][[1]]; Array[a, 100, 0] (* Amiram Eldar, Mar 08 2019 *)
PROG
(PARI) a(n) = if (n, my (v=Vecrev(binary(n))); while (#v>1, v=vector(#v-1, k, (v[k+1]-v[k]))); v[1], 0)
(PARI) a(n) = my(b = binary(n), s = -1); sum(i = 1, #b, s=-s; binomial(#b-1, i-1) * b[i] * s) \\ David A. Corneth, Mar 07 2019
CROSSREFS
KEYWORD
AUTHOR
Rémy Sigrist, Feb 28 2019
STATUS
approved