А если приглядеться, то можно заметить, что возводить в степень не нужно:
| Код | for i := A to B do if (Abs(i) mod 4) = 4 then Inc(Count); |
А можно вообще без переборов:
| Код | function MyCnt(a, b : integer) : integer; begin Result := 0; a := ((a+5) div 10)*10 + 4; b := ((b+6) div 10)*10 - 6; if (b > a) then Result := 1 + (b-a) div 10; end;
function Count4(a, b : integer) : integer; begin if (a <= 0) and (b >= 0) then Result := MyCnt(0, -a) + MyCnt(0, b) else if (a <= 0) and (b <= 0) then Result := MyCnt(-b, -a) else Result := MyCnt(a, b); end; |
Пример вызова: | Код | Count := Count4(-55, 76); |
Без возведения в степень надежнее, т.к. если A и B задать больше где-то 1000, то i*i*i перевалит за пределы возможностей integer... |