заменить
val = (int)pow(5, i);
на
double d = pow(5,i); val = (int)((d > 0.0) ? floor(d + 0.5) : ceil(d - 0.5));