<span> Задача 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.</span>
Var sum,I,n : integer;
begin
sum : = 0;
for i := 1 to 5 do
begin
readln(n);
if (n mod 10 = 4) and (n mod 2 = 0) then sum := sum + i;
end;
writeln (sum);
end.
Program Task;
Var a: Array [1..40] of Integer;
b: Real;
c, d, e, i: Integer;
Begin
Randomize;
For i := 1 To 40 Do
a[i] := Random(20 + 1);
WriteLn('Массив:');
For i := 1 To 40 Do
Write(a[i], ' ');
WriteLn;
For i := 1 To 40 Do
Begin
If a[i] Mod 2 = 1 Then
Begin
b := b + a[i];
c := c + 1;
End;
If a[i] <= 10 Then
d := d + a[i];
If a[i] Mod 3 = 0 Then
e := e + a[i];
End;
WriteLn('Среднее арифметическое нечётных чисел: ', (b / c):2:2);
WriteLn('Сумма чисел, не превышающих 10: ', d);
WriteLn('Сумма чисел кратных 3: ', e);
ReadLn;
<span>End.</span>
В сообщении 18 символов, следовательно 18 бит
6 Потому как оно кроме всех остольных делится на 2,3,1 и само на себя. Все остольные только сами на себя и на 1