#=
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:

Triangle	 	Tn=n(n+1)/2	 	1, 3, 6, 10, 15, ...
Pentagonal	 	Pn=n(3n−1)/2	 	1, 5, 12, 22, 35, ...
Hexagonal	 	Hn=n(2n−1)	 	1, 6, 15, 28, 45, ...
It can be verified that T285 = P165 = H143 = 40755.

Find the next triangle number that is also pentagonal and hexagonal.
=#
function ispentagonalnum(x)
  n = (sqrt(24x+1)+1)/6
  return n == round(Int, n) && n > 0
end

function ishexagonalnum(x)
  n = (sqrt(8x+1) + 1) / 4
  return n == round(Int,n) && n > 0
end

function calc()
  i = 286
  while true
    triangle = BigInt(i)*(i+1)/2
    if ispentagonalnum(triangle) && ishexagonalnum(triangle)
      return BigInt(triangle)
    end
    i += 1
  end
end
@time println(calc())
