Этот ABC знаменит тупыми и неочевидными ошибками.
Вот ты пытаешься его заставить вычислить 0 and (b mod d), да еще обрамляешь это дело знаками равенства с двух сторон. Что говорит нормальный паскаль? Он говорит, что такая операция неверна, или что операция ветвления ожидает булевское условие. И только АВС приплетает какие-то типы, которые тут вообще ни при чем.
Итак, разберем твое выражение
(a mod d)= 0 and (b mod d)=0
Что делает компилятор? Первыми выполняются действия в скобках, и оно приобретает такой вид:
Z1=0 and Z2=0
Потом выполняется 0 and Z2 - такой уж порядок действий - и выражение преобретает вид
Z1=Z3=0
И вот тут-то компилятор малость охреневает и говорит тебе, что такие конструкции - это как-то не по правилам.
Расставь скобки так, чтобы получилось правильное булевское выражение, и все будет в порядке.
integer - целое число
boolean - логическое значение, истина или ложь.
(a mod d)= 0 and (b mod d)=0 воспринимается компилятором как
((a mod d)= (0 and (b mod d)))=0
Т. е. сначала and, а потом =. Надо правильно расставить скобки, и все будет в порядке:
(a mod d= 0) and (b mod d=0 )
Integer -32768..32767
а у тебя 1000000000, многовато однако
переменные а, б, д в булеане должны быть, в компиляции же все написанно!