Алгоритм вычисления функции F(n) задан следующими соотношениями:
F(n) = n при n ≤ 3;
F(n) = n + F(n – 1) при чётных n > 3;
F(n) = n · n + F(n – 2) при нечётных n > 3;
Определите количество натуральных значений n, при которых F(n) меньше, чем 108.
Код на пайтоне
Если есть офис, то можете запустить программу.
Код увидеть Alt+F11
Sub massiv()
строка = 3 'не обязательно,номер строки для начала вывода на лист
n = Cells(2, 3) 'не обязательно, вводим количество чисел
Dim B(10000) As Integer 'резервируем память на 10000 целых чисел
S = 0 'обнуляем сумму
For i = 1 To n 'Начало цикла
k = Rnd(1) 'Генерируем случайное число в диапазоне (0;1)
k = k * 9 + 12 'Смещаем его в диапазон [12;20]
k = Int(k) 'обрезаем, оставляя целое
B(i) = k 'заполняем массив
S = S + k 'считаем сумму
Cells(строка, 3) = строка - 2 'не обязательно, вывод номера значеня
Cells(строка, 4) = k 'Не обязательно вывод значения
строка = строка + 1 'не обязательно, увеличить строку для вывода
Next i 'Конец цикла
Cells(строка, 3) = "сумма =" 'не обязательно, выводим надпись
Cells(строка, 4) = S 'не обязательно, выводим сумму
End Sub
Программа вывводит дату следующего дня. Чтоб не утяжелять программу, не стал писать проверку правильности введения даты - то есть пользователь должен вводить только правильные цифры :)
Program Upmixer;
var
day, month, year:integer;
begin
writeln('Введите дату:');
write('День:'); read (day);
write('Месяц:'); read (month);
write('Год:'); read (year);
day:=day+1;
{если было введено 29 февраля високосного года}
if (((year mod 4)=0) and ((year mod 100)<>0) and (month=2) and (day=30)) then
begin
day:=1;
month:=month+1;
end;
{если было введено 28 февраля невисокосного года}
if (((year mod 4)<>0) and (month=2) and (day=29)) then
begin
day:=1;
month:=month+1;
end;
{другие дни}
if ((day=31) and ((month=4) or(month=6) or (month=9) or (month=11))) then
begin
day:=1;
month:=month+1;
end;
if ((day=32) and ((month=1) or(month=3) or (month=5) or (month=7) or (month=8) or (month=10))) then
begin
day:=1;
month:=month+1;
end;
{31 декабря}
if ((day=32) and (month=12)) then
begin
day:=1;
month:=1;
year:=year+1;
end;
writeln('Завтра ', day,' ',month,' ',year);
end.