Всего различных вариантов расставить 5 букв на 5 мест равно 5!=120. Из них нужно выкинуть те варианты, где две гласные стоят рядом.
В наборе всего две гласные, поэтому можно просмотреть позиции, где они могут стоять: (1,2), (2,3), (3,4), (4,5) - 4 варианта позиций. Число расставить их друг относительно друга равно 2!=2 (ЕА, АЕ).
При фиксированной расстановке гласных букв остается 3 места, на которые можно расставить 3 согласные буквы. Это можно сделать Таким образом, количество неподходящих вариантов равно 4*2*6=48.
Значит, число подходящих вариантов равно 120-48=72.
Program Ulitka; Var SunnyDay: Array [1..30] Of Boolean; a, b, c, i: Integer; Begin WriteLn('a = '); ReadLn(a); WriteLn('b = '); ReadLn(b); b := b * 100; Randomize; For i := 1 To 30 Do Begin If Random(2) = 1 Then SunnyDay[i] := True Else SunnyDay[i] := False; End; For i := 1 To 30 Do Begin If SunnyDay[i] = True ThenBegin a := a + 2; If a > b Then a := b; End Else Begin a := a - 10; If a < 0 Then a := 0; End; End; WriteLn('Дни месяца были таковы:'); For i := 1 To 30 Do Begin If SunnyDay[i] = True Then WriteLn(i, '. Солнечный') Else WriteLn(i, '. Пасмурный') End; WriteLn('К концу 30 дня местоположение улитки равно ', a, ' см над землей'); End.
72
Объяснение:
Всего различных вариантов расставить 5 букв на 5 мест равно 5!=120. Из них нужно выкинуть те варианты, где две гласные стоят рядом.
В наборе всего две гласные, поэтому можно просмотреть позиции, где они могут стоять: (1,2), (2,3), (3,4), (4,5) - 4 варианта позиций. Число расставить их друг относительно друга равно 2!=2 (ЕА, АЕ).
При фиксированной расстановке гласных букв остается 3 места, на которые можно расставить 3 согласные буквы. Это можно сделать Таким образом, количество неподходящих вариантов равно 4*2*6=48.
Значит, число подходящих вариантов равно 120-48=72.
Var SunnyDay: Array [1..30] Of Boolean;
a, b, c, i: Integer;
Begin
WriteLn('a = ');
ReadLn(a);
WriteLn('b = ');
ReadLn(b);
b := b * 100;
Randomize;
For i := 1 To 30 Do
Begin
If Random(2) = 1 Then
SunnyDay[i] := True
Else
SunnyDay[i] := False;
End;
For i := 1 To 30 Do
Begin
If SunnyDay[i] = True
ThenBegin
a := a + 2;
If a > b Then
a := b;
End
Else
Begin
a := a - 10;
If a < 0 Then
a := 0; End;
End; WriteLn('Дни месяца были таковы:');
For i := 1 To 30 Do
Begin
If SunnyDay[i] = True Then
WriteLn(i, '. Солнечный')
Else
WriteLn(i, '. Пасмурный')
End;
WriteLn('К концу 30 дня местоположение улитки равно ', a, ' см над землей');
End.