2. А вот так все еще учат в большинстве школ (стиль образца 70-80х годов века)
const n=16; var i,s:integer; a:array[1..n] of integer; begin Randomize; s:=0; for i:=1 to n do begin a[i]:=Random(101)-20; Write(a[i],' '); if i mod 2=0 then s:=s+a[i] end; Writeln; Writeln('S=',s) end.
Число всевозможных размещений n символов по k позициям находится, как n^k Рассмотрим первый вариант, когда символ Х стоит на последнем месте: Всего 5 позиций. Последняя из них точно будет занята символом Х, тогда свободными остаются первые 4 позиции: * * * * Х На каждую из них может приходиться какой-то один из символов А, В или С Тогда общее число возможных вариантов вычисляется, как 3^4 = 81.
Рассмотрим второй вариант, когда символа Х нет вовсе. В этом случае на каждую из 5-ти позиции может приходиться один из символов А, В или С. Тогда общее число вариантов вычисляется, как 3^5 = 243
В итоге получаем, что всего кодовых слов может быть 243+81 = 324.
// PascalABC.NET 3.1, сборка 1172 от 19.02.2016 begin var s:=ReadInteger('n=').ToString.JoinIntoString(''); Writeln('Цифр в числе- ',s.Length); Writeln('Сумма цифр- ',s.Select(d->Integer.Parse(d)).Sum); Writeln('Последняя цифра- ',s.Last); Writeln('Первая цифра- ',s.First); Writeln('Предпоследняя цифра- ',s[s.Length-1]); var m:=ReadInteger('m='); Write('Сумма ',m,' последних цифр числа- '); Writeln(s.Skip(s.Length-m).Select(d->Integer.Parse(d)).Sum); Write('Цифра 3 в запись числа '); if Pos('3',s)>0 then Writeln('входит') else Writeln('не входит'); Writeln('Число в обратном порядке- ',s.Reverse.JoinIntoString('')); Writeln('Перестановка первой и последней цифр- ', s.Last+Copy(s,2,s.Length-2)+s.First); end.
Тестовое решение: n= 1063 Цифр в числе- 4 Сумма цифр- 10 Последняя цифра- 3 Первая цифра- 1 Предпоследняя цифра- 6 m= 2 Сумма 2 последних цифр числа- 9 Цифра 3 в запись числа входит Число в обратном порядке- 3601 Перестановка первой и последней цифр- 3061
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(16,-20,80); a.Println;
Writeln('S=',a.Where((x,i)->i.IsOdd).Sum)
end.
Пример
61 64 70 22 76 22 18 44 36 53 29 -9 42 -19 66 34
S=211
2. А вот так все еще учат в большинстве школ (стиль образца 70-80х годов века)
const
n=16;
var
i,s:integer;
a:array[1..n] of integer;
begin
Randomize;
s:=0;
for i:=1 to n do begin
a[i]:=Random(101)-20;
Write(a[i],' ');
if i mod 2=0 then s:=s+a[i]
end;
Writeln;
Writeln('S=',s)
end.