М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Polinochka570
Polinochka570
18.10.2022 17:57 •  Информатика

ЗАДАЧИ НА ПИТОНЕ 1. Дано число. Реализовать рекурсивный алгоритм по развороту этого числа (1234->4321)
2. Дано число x(целое). Реализовать рекурсивный алгоритм для вывода на экран всех чисел от 1 до x
3. Дано число. Реализовать рекурсивный алгоритм, который будет возвращать слово “Да” если это число равно степени 2(2,4,8,16,32,64 и тд), и “Нет” в противном случае

НАПИСАТЬ К КАЖДОЙ ЗАДАЧЕ, КАКОВА ЕЕ АСИМПТОТИЧЕСКАЯ СЛОЖНОСТЬ В ПОСЛЕДНЕЙ СТРОКЕ КОММЕНТАРИЕМ (речь об О-нотации)

👇
Ответ:
Amana95
Amana95
18.10.2022

Прикрепляю файл с сохранением форматирования. Его же можно переименовать в файл с расширением .py и запустить в интерпретаторе, проверить работо .

И да, единица тоже является степенью двойки, так что checkBy2(1) выдаст "да"

def reverseNumber(x, n=0):

s = list(str(x)) if type(x) == int else x

if n*2 >= len(s):

 return int(''.join(s))

else:

 s[n],s[len(s)-n-1] = s[len(s)-n-1],s[n]

 return reverseNumber(s, n+1)

# Сложность O(n), где n - количество символов в строковом представлении x

# либо, если n воспринимать как число, O(logn)

print(reverseNumber(12345))

def printBelow(x, current=1):

if x > 0 and current <= x:

 print(current)

 printBelow(x, current+1)

# Сложность O(n), если считать сложность перевода числа в строку константной

printBelow(10)

def checkBy2(x):

if x == 1:

 print("Да")

elif x % 2 != 0 or x < 1:

 print("Нет")

else:

 checkBy2(x//2)

# Сложность O(logn), если не используется длинная арифметика, т.к. в худшем случае

# для увеличения рекурсивных вызовов на n нужно увеличить число в 2^n раз

checkBy2(31)

checkBy2(32)

4,8(86 оценок)
Открыть все ответы
Ответ:
fistahka336
fistahka336
18.10.2022
Program pr3;
var poroda:string;
age,holka:real;
n,i,k:integer;
begin
repeat
write ('Введите количесвто собак на выстовке: ');
readln (n);
until n>0;
k:=0;
for i:= 1 to n do
begin
writeln ('Введите по отдельности: породу, возраст и высоту холки очередной собаки: ');
readln (poroda);
readln (age);
readln (holka);
if (poroda='боксер') and (age>=2) and (age<=3) and (holka>=55) then k:=k+1;
end;
if k>0 then writeln('Число боксеров c нужным возрастом и холкой на выставке: ', k)  else writeln ('Боксеров с нужными критриями навыставке не обнаружено');
end.
4,6(36 оценок)
Ответ:
Oufaa
Oufaa
18.10.2022
Var x, i, h1, h2, h3, h4, h5, h6, s1, s2: integer;
begin
       readln (x);
       h1 := x div 100000;
       h2 := x mod 100000 div 10000; 
       h3 := x mod 10000 div 1000; 
       h4 := x mod 1000 div 100; 
       h5 := x mod 100 div 10; 
       h6 := x mod 10; 
       s1 := h1 + h2 + h3; 
       s2 := h4 + h5 + h6; 
       if (s1 = s2) then writeln('Счастливый') 
                      else writeln('Несчастный:)');
        readln;
end.

Вот, ошибка в целочисленном делении) Советую такое на листочке расписывать: 123321 и обводить что нужно взять, что в каком порядке откидывать...)
4,8(70 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ