k : byte; arr : array of int64; function Fn (c : byte) : int64; begin if arr[c - 1] <> 0 then begin Fn := arr[c - 1]; exit; end; if c < 3 then Fn := 1 else Fn := Fn (c - 1) + Fn (c - 2); arr[c - 1] := Result; end;
begin read (k); setlength (arr, k); writeln (Fn (k)); end.
var n : byte; arr : array of int64;
tmp : int64; function Fn (c : byte) : int64; begin if arr[c - 1] <> 0 then begin Fn := arr[c - 1]; exit; end; if c < 3 then Fn := 1 else Fn := Fn (c - 1) + Fn (c - 2); arr[c - 1] := Result; end;
begin read (n); setlength (arr, n); tmp := (Fn (n));
tmp := 0;
for i := 1 to n do
tmp := (tmp + arr[i]) mod 2;
if tmp = 1 then writeln ('No') else writeln ('Yes');
end.
Это нисходящее динамическое программирование. В массиве Arr храняится сами числа. Рекурсивная функция Fn (n) возвращает N-ое число. В б) мы сначала просчитываем n чисел (то есть считаем число n, так как для него нужны все предыдущие), а потом ищем их сумму. Так как числа могут быть большими, то мы берем сразу их остаток от деления 2 во избежание преполнения.
var
k : byte;
arr : array of int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;
begin
read (k);
setlength (arr, k);
writeln (Fn (k));
end.
var
n : byte;
arr : array of int64;
tmp : int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;
begin
read (n);
setlength (arr, n);
tmp := (Fn (n));
tmp := 0;
for i := 1 to n do
tmp := (tmp + arr[i]) mod 2;
if tmp = 1 then writeln ('No') else writeln ('Yes');
end.
Это нисходящее динамическое программирование. В массиве Arr храняится сами числа. Рекурсивная функция Fn (n) возвращает N-ое число. В б) мы сначала просчитываем n чисел (то есть считаем число n, так как для него нужны все предыдущие), а потом ищем их сумму. Так как числа могут быть большими, то мы берем сразу их остаток от деления 2 во избежание преполнения.
from turtle import * # импортирую *встроенную(она скачана при
# установке питона) библиотеку turtle
# * для упрощения пр. до: turtle.комманда после: команда #
# (избавляемся от turtle. - заменяем
# *turtle.комманда() на просто *команда())
reset() # очищаю экран (вдруг что-то случится)
t = Turtle()
t.hideturtle() # не показывать курсор черепахи
screensize(800, 800, color('black')) # расширение окна
# цвет
# numinput(заголовок, основной текст и т.д.) такая функция в turtle она просит пользователя ввести #число от minval до maxval - все задается
# иначе все выбирает (из цифр) (любое число пр. - 3054501210321)
color = numinput('Выберите цвет звезды: ',
'1 - красный, 2 - желтый, 3 - синий',
minval=1, # минимальное значение
maxval=3) # максимальное значение
# условные операторы (выполняют действие при условии...)
if color == 1:
color = t.color("red")
elif color == 2:
color = t.color("yellow")
elif color == 3:
color = t.color("blue")
# скорость и обновить экран
speed(0) # 0 - самая быстрая, также как и 10, без разницы
update()
# функция (выполняется когда пишут имя_функции(и
# аргументы(size и т.п.) бывает и без них тогда просто пустое
# поле))
def draw_star(size):
t.begin_fill() # заполнить когда t.end_fill()
# рисую
angle = 144 # начальный луч
# цикл (_ ставлю когда ничего не объявляю)
for _ in range(5): # 5 длинных сторон(оригинальный
t.forward(size) # нарисовать линии
t.right(angle) # и повернуть
t.end_fill()
# смещаем на 300 вправо по x
t.left(180)
t.forward(200)
t.right(180)
# рисуем
draw_star(100 * 3) # размер
# ну и обновлять экран пока True (всегда или до выхода
# пользователя из программы)
while True:
update()