Вы используете деление с плавающей точкой /
, которое имеет ограниченную точность, поэтому ваш большой результат округляется.
Вместо этого вы можете получить то, что вам нужно, с целым числом, деление по полу //
, которое дает целочисленный результат с неограниченной точностью:
import math
pow((2*3*5),28)-29*(pow((2*3*5),28)//29)-1
# 0