#!/usr/bin/ruby # -*- coding: utf-8 -*- def calc(d) ( (-1 + (1+4*d)**0.5) / 2.0 ).to_i end def correct(d) t = (d**0.5).to_i while t*t + t <= d t += 1 end t - 1 end N = 10**5 cnt = 0 (10**9).downto(0) { |k| d = k*k + k - 1 next unless (1 <= d && d <= 10**18) if calc(d) != correct(d) puts d cnt += 1 break if cnt == N end }