Количество зёрен на клетке будет равно 2^(N-1)
Тут сказано использовать переменную типа integer, при этом надо помнить, что максимальный номер клетки, который можно задавать равен 31 (для номеров выше будет либо ошибка, либо неверный ответ).
Чтобы считать зерно вплоть до последней, 64-ой клетки шахматной доски- надо менять тип на uint64 либо BigInteger (но, они не везде доступны да и программу надо будет править).
Вариант с циклом loop (в нём задаётся число повторов)
function Zern2(a: integer): integer;
begin
Result := 1;
loop a-1 do
Result := Result * 2;
end;
begin
var n,m: integer;
write('Введите номер клетки: ');
Read(n);
m:=Zern2(n);
write('Зёрен на этой клетке: ',m,' шт.');
end.
Вариант с циклом while:
function Zern2(a: integer): integer;
begin
Result := 1;
while a>1 do
begin
Result := Result * 2;
a := a - 1;
end;
end;
begin
var n,m: integer;
write('Введите номер клетки: ');
Read(n);
m:=Zern2(n);
write('Зёрен на этой клетке: ',m,' шт.');
end.
Вариант без цикла:
function Zern2(a: integer): integer;
begin
Result := Trunc(power(2,a-1));
end;
begin
var n,m: integer;
write('Введите номер клетки: ');
Read(n);
m:=Zern2(n);
write('Зёрен на этой клетке: ',m,' шт.');
end.
Другой перевода из десятичной системы в двоичную: берем число и делим его столбиком на основание системы, в которую переводим. Нацело. Если есть остаток, то его оставляем. А получившееся часное снова делим на основание требуемой системы. И так далее, пока часное не перестанет делится нацело. А чтобы записать число в требуемой системе, записываем последнее часное, а потом все остатки, начиная с последнего. (кстати, по аналогии можно переводить в любую другую систему).
173| 2
172 86| 2
1 86 43| 2
0 42 21| 2
1 20 10| 2
1 10 5| 2
0 4 2| 2
1 2 1
0
Итого: в записи 5 единиц.
посмотри у меня на рисунке. я увеличила масштаб в 10 раз, от этого ничего не изменится