
Помогите решить на Питоне задачи, пожалуйста, в интернете все решения неправильные!!! Даю 34 балла.
1) Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией возведения в степень пользоваться нельзя! 2)Дано натуральное число n>1. Выведите его наименьший делитель, отличный от 1. Решение оформите в виде функции MinDivisor(n). Алгоритм должен иметь сложность O(корень из n) . Указание. Если у числа n нет делителя не превосходящего корень из n , то число n — простое и ответом будет само число n. 3) Последовательность Фибоначчи это последовательность типа Xn = Xn – 1 + Xn – 2 , n > 2, n - номер числа в последовательности. Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что Xn=A. Если А не является числом Фибоначчи, выведите число -1. 4) Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент. Входные данные Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания). Выходные данные Выведите ответ на задачу.

Ответы на вопрос

N=int(input())
s=2
flag=False
for i in range(N):
if N=s:
flag=True
break
else:
s*=2
if flag:
print('Yes')
else:
print('No')
2.
n=int(input())
def MinDivisor(n):
nod=-1
for i in range(n-1):
if n%i=0:
return i
break
if MinDivision(n)==-1:
print(n,' число является простым.')
else:
print(MinDivision(n))
3.
A=int(input())
x=x1=1
s=0
while x1<A+2:
b=x
x=x1
x1+=b
s+=1
if x1==A:
print(s)
else:
print(-1)
4.
a=[]
while 1:
s=int(input())
if s==0:
break
a.append(s)
a.sort()
print(a[-2])



1) Задача: Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией возведения в степень пользоваться нельзя!
Решение: Для того чтобы число N было точной степенью двойки, оно должно быть положительным и иметь только одну единичную цифру в двоичном представлении. Для проверки этого условия, мы можем использовать битовые операции. Если число N & (N - 1) равно 0, то N является точной степенью двойки.
Вот решение на языке Python:
```python def is_power_of_two(n): if n <= 0: return False return n & (n - 1) == 0
N = int(input("Введите число N: ")) if is_power_of_two(N): print("YES") else: print("NO") ```
2) Задача: Дано натуральное число n > 1. Выведите его наименьший делитель, отличный от 1. Решение оформите в виде функции MinDivisor(n). Алгоритм должен иметь сложность O(корень из n).
Решение: Для нахождения наименьшего делителя числа n, мы можем перебирать числа от 2 до корня из n и проверять, делится ли n на них без остатка. Если находим делитель, то возвращаем его значение.
Вот решение на языке Python:
```python import math
def MinDivisor(n): if n <= 1: return None for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return i return n
n = int(input("Введите число n: ")) divisor = MinDivisor(n) if divisor: print("Наименьший делитель:", divisor) else: print("Число простое") ```
3) Задача: Последовательность Фибоначчи это последовательность типа Xn = Xn – 1 + Xn – 2, n > 2, n - номер числа в последовательности. Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что Xn = A. Если A не является числом Фибоначчи, выведите число -1.
Решение: Для определения, является ли число A числом Фибоначчи, мы можем последовательно вычислять числа Фибоначчи до тех пор, пока полученное число не превысит A. Если полученное число равно A, то выводим его номер в последовательности, иначе выводим -1.
Вот решение на языке Python:
```python def fibonacci_number(n): if n <= 0: return None if n == 1: return 0 if n == 2: return 1 prev_prev = 0 prev = 1 current = 1 i = 3 while current < n: prev_prev = prev prev = current current = prev_prev + prev i += 1 if current == n: return i else: return -1
A = int(input("Введите число A: ")) fibonacci_index = fibonacci_number(A) if fibonacci_index != -1: print("Число Фибоначчи с номером:", fibonacci_index) else: print("Число не является числом Фибоначчи") ```
4) Задача: Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент.
Решение: Мы можем использовать две переменные, чтобы хранить текущий максимальный и второй по величине элементы. Перебираем числа в последовательности и обновляем значения переменных при нахождении новых максимальных элементов. В конце выводим значение второго по величине элемента.
Вот решение на языке Python:
```python def second_largest_element(sequence): largest = 0 second_largest = 0 for num in sequence: if num > largest: second_largest = largest largest = num elif num > second_largest and num != largest: second_largest = num return second_largest
sequence = [] num = int(input("Введите число: ")) while num != 0: sequence.append(num) num = int(input("Введите число: "))
second_largest = second_largest_element(sequence) print("Второй по величине элемент:", second_largest) ```
Надеюсь, что эти решения помогут вам решить задачи. Если у вас возникнут вопросы, не стесняйтесь задавать их.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili