Generalize to find X (and I) such that

(X + X+1 + X+2 + ... + X+I) = T

for any integer T.

You are asking for all (X,I) s.t. (2X+I)(I+1) = 2T. The problem is (very) slightly easier if we don't restrict X to being positive, so we'll solve this first.

Note that 2X+I and I+1 must have different parities, so the answer to the relaxed question is N = 2*(o_1+1)*(o_2+1)*...*(o_n+1), where 2T = 2^o_0*3^o_1*...*p_n^o_n (the prime factorization); this is easily seen to be the number of ways we can break 2T up into two positive factors of differing parity (with order).

In particular, 20000 = 2^5*5^4, hence there are 2*(4+1) = 10 solutions

for T = 10000. These are (2X+I,I+1)
(32*1,5^4) (32*5,5^3) (32*5^2,5^2) (32*5^3,5) (32*5^4,1) (5^4,32*1) (5^3,32*5) (5^2,32*5^2) (5,32*5^3) (1,32*5^4)
And they give rise to the solutions (X,I)
(-296,624) (18,124) (388,24) (1998,4) (10000,0) (297,31) (-17,179) (-387,799) (-1997,3999) (-9999,19999)

If you require that X>0 note that this is true iff 2X+I > I+1 and hence the number of solutions to this problem is N/2 (due to the symmetry of the above ordered pairs).

lib/DbaDatabase.php:134: Warning: dba_replace() [<a href='function.dba-replace'>function.dba-replace</a>]: You cannot perform a modification to a database without proper access