Не используйте map
. Он генерирует большой список в памяти.
Не используйте xrange
. Он ограничен короткими целыми числами.
Вместо этого используйте генераторы.
# No changes on `ceil()`, `func()` and `calculate()`
def generate_sequence(start, stop):
while start < stop:
yield start
start += 1
result = sum(calculate(n) for n in generate_sequence(10**13, 10**14))
print "%.10f" % result;
Это будет работать. Но для суммирования 10**14 - 10**13 = 90,000,000,000,000
результатов потребуется много времени. Может быть, вы можете что-то еще оптимизировать (подсказка, подсказка)