1.var a,b:integer; begin writeln('введите числа (0 признак окончания ввода)'); readln(a); b:=1; while (a<>0) do begin readln(a); if (a mod 2 = 0) and (a<>0) then b:=b*a; end;writeln('произведение чётных чисел последовательности ',b); end. 2.var a,b:integer; begin b:=0; a:=1; while (a<=10000) do begin if (a mod 10 = 0) then b:=b+1; a:=a+1; end; writeln('количество круглых чисел ',b); end. 3.var a,b:integer; begin writeln('введите числа (1 признак окончания ввода)'); readln(a); b:=0; while (a<>1) do begin readln(a); if (a mod 7 = 0) then b:=b+1; end; writeln('цифра 7 встречается ',b,' раз'); end. 4.var a,b:integer;begin writeln('введите числа (0 признак окончания ввода)'); b:=0; a:=1; while (a<>0) do begin readln(a); if (a<>0) then b:=a*a+b; end;writeln('сумма квадратов ',b); end.
Задача 5. “Кузнечик” В одной стране жил-был волшебный кузнечик, умеющий прыгать на любое расстояние. А ко- гда он изучил тему «числовые последовательности», то решил прыгать по дороге с нумерованны- ми клетками по придуманному им правилу: 1 2 4 7 11 16 22 29 и так далее, дальше продолжи- те сами. А другой кузнечик решил подкараулить его в какой-нибудь клетке N, чтобы не дать уска- кать в бесконечность ему, предложите алгоритм, проверяющий, попадет ли первый кузнечик в клетку N? Решение: Можно догадаться, что каждое n-ное число bn = bn-1 + n – 1, где b1 = 1. Можно также догадаться, что каждое число нашей прогрессии bn = 1 + 1 + 2 + 3 + … + n – 1 = 1 + Sn , где Sn – это сумма арифметической прогрессии с a1=0 и d=1. И по формуле прогрессии получаем: bn = 1 + n(n-1)/2. Остается проверить, равно ли введенное N какому-нибудь bn. Решаем уравнение: N = 1 + n(n-1)/2, квадратное уравнение: n2 – n + 2 – 2N = 0, D = 1 – 4(2-2N) = 8N – 7, n = (1+sqrt(8N-7))/2 – берем только положительный ответ. Получился алгоритм: Подставляем N в формулу для n и если n – целое, то кузнечик попадет в клетку с номером N. Вопрос только, как проверить, целое ли n. Для этого проверяем, достаточно ли мало отклонение его от его округле- ния: если abs( n – round( n ) ) < 0,000000000000001, то n – скорее всего целое. По крайней мере с точностью до 0,000000000000001.
begin
writeln('введите числа (0 признак окончания ввода)');
readln(a);
b:=1;
while (a<>0) do begin
readln(a);
if (a mod 2 = 0) and (a<>0) then b:=b*a;
end;writeln('произведение чётных чисел последовательности ',b);
end.
2.var a,b:integer;
begin
b:=0;
a:=1;
while (a<=10000) do begin
if (a mod 10 = 0) then b:=b+1;
a:=a+1;
end;
writeln('количество круглых чисел ',b);
end.
3.var a,b:integer;
begin
writeln('введите числа (1 признак окончания ввода)');
readln(a);
b:=0;
while (a<>1) do begin
readln(a);
if (a mod 7 = 0) then b:=b+1;
end;
writeln('цифра 7 встречается ',b,' раз');
end.
4.var a,b:integer;begin
writeln('введите числа (0 признак окончания ввода)');
b:=0;
a:=1;
while (a<>0) do begin
readln(a);
if (a<>0) then b:=a*a+b;
end;writeln('сумма квадратов ',b);
end.