Рассматриваемое выражение истинно тогда и только тогда, когда истинно хотя бы одно высказывание (так как выражение есть композиция логических сложений). Пусть A=15. Если хотя бы одна из правых скобок верна, то решать нечего, выражение истинно. Пусть они обе неверны. Тогда x и y оба максимум 14. И тогда произведение не больше 196. То есть первая скобка истинна. Итак, A=15 подходит. Больше A быть не может: выберем x=y=A-1. Произведение равно (A-1)², что для A≥16 не меньше 225. Т.е. все скобки ложные.
ответ: 15
Немного теории:
Любой доступ к элементу массива, осуществляемый с операции индексирования может быть осуществлен при указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
В данном задании:
int a[]= {7,8,9} - инициализация массива. По сути, это описание и присваивание значения одновременно. После выполнения этой строчки: a[0]=7; a[1]=8; a[2]=9 - массив из трех элементов, нумерация с нуля.
int *b=a - Эта строчка переводится как "создаем переменную b типа указатель на целое и присваем ему адрес нулевого элемента массива".
*(b+2)=b+1 - очень странная запись.
*(b+2) равносильно a[2] - значение последнего элемента данного массива. Переменная b содержит целое число, которое является адресом нулевого элемента массива. b+1 - указатель "сдвигается на 1 элемент вправо", т.е (b+1) - адрес первого элемента массива.
То есть данная запись означает, что в последний элемент массива(a[2] в данном случае) записывается адрес первого элемента массива(a[1] в данном случае).
b[1] - такая запись указателя с индексом равносильна a[1] - значению первого элемента массива.
В итоге: b[1] <=> a[1]=8
Примечание:
Изначально ваша программа не выполниться, так как запись int b*=a - неверная(правильно int *b=a)