login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A225437
Numbers of triples {x, y, z} such that z >= y > 0 and triangular(x) + triangular(y) * triangular(z) = 2^n.
2
1, 1, 2, 0, 4, 0, 5, 1, 7, 0, 4, 0, 18, 0, 2, 0, 17, 0, 16, 0, 15, 0, 9, 0, 39, 0, 9, 0, 61, 0, 10, 3, 27, 0, 18, 0, 56, 0, 8, 0, 80, 0, 48, 1, 41, 0, 12, 0, 118, 1, 10, 0, 90, 0, 30, 2, 24, 0, 24
OFFSET
0,3
EXAMPLE
{0, 1, 1} is the only triple producing 2^0, so a(0) = 1.
{1, 1, 3} and {3, 1, 1} are the triples producing 2^2, so a(2) = 2.
PROG
(C)
#include <stdio.h>
#include <math.h>
typedef unsigned long long U64;
U64 isTriangular(U64 a) { // ! Must be a <= (1<<63)
U64 s = sqrt(a*2);
if (a>=(1ULL<<63)) {
if (a==(1ULL<<63)) return 0;
printf("Error: a = %llu\n", a), exit(1);
}
return (s*(s+1)/2 == a);
}
int main() {
U64 c, n, x, tx, y, ty, z, prod;
for (n = 1; n>0 && n <= (1ULL<<63); n+=n) {
for (c = 0, x = tx = 0; tx <= n; ++x, tx+=x)
for (z=prod=n-tx, y=ty=1; ty<=z; ++y, ty+=y, z=prod/ty)
if ((z * ty == prod) && isTriangular(z)) c++;
printf("%llu, ", c);
}
return 0;
}
CROSSREFS
KEYWORD
nonn,hard,more
AUTHOR
Alex Ratushnyak, May 08 2013
STATUS
approved