Proc35
def Fact2(N):python
result = 1
if N % 2 == 0: # если N четное
for i in range(2, N+1, 2):
result *= i
else: # если N нечетное
for i in range(1, N+1, 2):
result *= i
return result
numbers = [3, 4, 5, 6, 7]
for num in numbers:
double_factorial = Fact2(num)
print(f"Двойной факториал числа {num} равен {double_factorial}")
❤🔥1👍1
Proc36
Теперь, чтобы найти пять чисел Фибоначчи с данными номерами \(N_1, N_2, \ldots, N_5\), мы можем вызвать функцию
Обратите внимание, что вычисление чисел Фибоначчи с большими номерами может занять значительное время, так как рекурсивный подход имеет экспоненциальную сложность. Для более эффективного вычисления чисел Фибоначчи с большими номерами, можно использовать итеративный подход или сохранять промежуточные значения в массиве для повторного использования.
def Fib(N):В этой реализации, мы проверяем базовые случаи: если
if N <= 0:
return None
elif N == 1 or N == 2:
return 1
else:
return Fib(N-2) + Fib(N-1)
N меньше или равно 0, возвращаем None, а если N равно 1 или 2, возвращаем 1. В противном случае, мы рекурсивно вызываем функцию Fib для \(N-2\) и \(N-1\) и складываем их значения.Теперь, чтобы найти пять чисел Фибоначчи с данными номерами \(N_1, N_2, \ldots, N_5\), мы можем вызвать функцию
Fib для каждого из этих номеров и сохранить результаты в переменные:N1 = 10В этом примере, мы вызываем функцию
N2 = 15
N3 = 20
N4 = 25
N5 = 30
fib1 = Fib(N1)
fib2 = Fib(N2)
fib3 = Fib(N3)
fib4 = Fib(N4)
fib5 = Fib(N5)
print(fib1, fib2, fib3, fib4, fib5)
Fib для каждого из номеров \(N_1, N_2, \ldots, N_5\) и сохраняем результаты в переменные fib1, fib2, fib3, fib4, fib5. Затем мы выводим эти результаты на экран.Обратите внимание, что вычисление чисел Фибоначчи с большими номерами может занять значительное время, так как рекурсивный подход имеет экспоненциальную сложность. Для более эффективного вычисления чисел Фибоначчи с большими номерами, можно использовать итеративный подход или сохранять промежуточные значения в массиве для повторного использования.
👍2
Proc37
import math
def Powerl(A, B):
if A <= 0:
return 0
else:
return math.exp(B * math.log(A))
# Пример использования функции
A = 2
B = 3
C = -1
P = 4
result_A = Powerl(A, P) # Вычисляем A^P
result_B = Powerl(B, P) # Вычисляем B^P
result_C = Powerl(C, P) # Вычисляем C^P
print(result_A) # Выводим результат A^P
print(result_B) # Выводим результат B^P
print(result_C) # Выводим результат C^P
🔥2
Proc38
def Power2(A, N):
if N == 0:
return 1
elif N > 0:
result = 1
for _ in range(N):
result *= A
return result
else:
result = 1
for _ in range(abs(N)):
result *= A
return 1 / result
# Пример использования функции
A = 2
K = 3
L = -2
M = 4
result_K = Power2(A, K) # Вычисляем A^K
result_L = Power2(A, L) # Вычисляем A^L
result_M = Power2(A, M) # Вычисляем A^M
print(result_K) # Выводим результат A^K
print(result_L) # Выводим результат A^L
print(result_M) # Выводим результат A^M
👏2
Proc39
def Power3(A, B):
if B % 1 == 0:
return Power(A, round(B))
else:
return Powerl(A, B)
👍2
Proc40
import math
def Exp1(x, ε):
result = 1.0
term = 1.0
n = 1
while term > ε:
result += term
n += 1
term = math.pow(x, n) / math.factorial(n)
return result
x = 2.0
ε_values = [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001]
for ε in ε_values:
approx_exp = Exp1(x, ε)
print(f"Приближенное значение exp({x}) при ε = {ε}: {approx_exp}")
🔥2
Proc41
import mathТеперь мы можем использовать функцию Sin1(x, ε) для нахождения приближенного значения синуса для данного x при шести разных значениях ε. Например:
def Sin1(x, ε):
sum = 0
term = 0
n = 0
while abs(term) > ε:
n += 1
term = (-1)**n * x**(2*n+1) / math.factorial(2*n+1)
sum += term
return sum
x = 1.0
epsilons = [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001]
for epsilon in epsilons:
sin_approx = Sin1(x, epsilon)
sin_actual = math.sin(x)
print(f"Приближенное значение синуса для x={x} с ε={epsilon}: {sin_approx}")
print(f"Фактическое значение синуса для x={x}: {sin_actual}")
print(f"Разница: {abs(sin_approx - sin_actual)}\n")
👍2
Proc42
# Пример использования функций для нахождения приближенных значений
x = 0.5
epsilons = [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001]
for epsilon in epsilons:
cos_approx = Cos1(x, epsilon)
ln_approx = LnI(x, epsilon)
cos_exact = math.cos(x)
ln_exact = math.log(1 + x)
print(f"При epsilon = {epsilon}:")
print(f"Приближенное значение cos({x}) = {cos_approx}")
print(f"Точное значение cos({x}) = {cos_exact}")
print(f"Приближенное значение ln(1 + {x}) = {ln_approx}")
print(f"Точное значение ln(1 + {x}) = {ln_exact}")
print()
import mathProc43
def Cos1(x, epsilon):
summation = 1
term = 1
factorial = 1
sign = -1
power = 2
while abs(term) > epsilon:
factorial *= power * (power - 1)
term *= x * x / factorial
summation += sign * term
sign *= -1
power += 2
return summation
```
def LnI(x, epsilon):
summation = x
term = x
power = 2
sign = -1
while abs(term) > epsilon:
term *= x * sign / power
summation += term
power += 1
sign *= -1
return summation
# Пример использования функций для нахождения приближенных значений
x = 0.5
epsilons = [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001]
for epsilon in epsilons:
cos_approx = Cos1(x, epsilon)
ln_approx = LnI(x, epsilon)
cos_exact = math.cos(x)
ln_exact = math.log(1 + x)
print(f"При epsilon = {epsilon}:")
print(f"Приближенное значение cos({x}) = {cos_approx}")
print(f"Точное значение cos({x}) = {cos_exact}")
print(f"Приближенное значение ln(1 + {x}) = {ln_approx}")
print(f"Точное значение ln(1 + {x}) = {ln_exact}")
print()
`Proc 44
import mathProc45
def Arctg1(x, epsilon):
result = 0
term = x
n = 1
while abs(term) >= epsilon:
result += term
term = (-1) ** n * (x ** (2 * n + 1)) / (2 * n + 1)
n += 1
return result
def Power4(x, a, epsilon):
result = 1
term = 1
n = 1
while abs(term) >= epsilon:
result += term
term = a * (a - 1) * ... * (a - n + 1) * (x ** n) / math.factorial(n)
n += 1
return result
Proc46
Функция NOD2, реализующая алгоритм Евклида для нахождения наибольшего общего делителя (НОД) двух целых положительных чисел A и B, может быть описана следующим образом:
Функция NOD2, реализующая алгоритм Евклида для нахождения наибольшего общего делителя (НОД) двух целых положительных чисел A и B, может быть описана следующим образом:
def NOD2(A, B):Для нахождения наибольшего общего делителя пар (A, B), (A, C), (A, D), где даны числа A, B, C, D, можно использовать функцию NOD2 следующим образом:
while B != 0:
A, B = B, A % B
return A
A = 24Результат выполнения программы будет:
B = 36
C = 48
D = 60
NOD_AB = NOD2(A, B)
NOD_AC = NOD2(A, C)
NOD_AD = NOD2(A, D)
print("НОД(A, B) =", NOD_AB)
print("НОД(A, C) =", NOD_AC)
print("НОД(A, D) =", NOD_AD)
НОД(A, B) = 12Таким образом, наибольшие общие делители пар (A, B), (A, C), (A, D) равны 12, 24 и 12 соответственно.
НОД(A, C) = 24
НОД(A, D) = 12
Proc47
Вот описание процедуры
С помощью процедуры
Вот описание процедуры
Fracl на языке программирования:def Fracl(a, b, p, q):В этой процедуре сначала вычисляется наибольший общий делитель
nod = NOD2(a, b)
p = a // nod
q = b // nod
if q < 0:
p = -p
q = -q
nod с помощью функции NOD2. Затем числитель p присваивается результату деления a на nod, а знаменатель q присваивается результату деления b на nod. Если знаменатель q отрицателен, то меняем знак числителя p и знаменателя q, чтобы знак результирующей дроби был приписан числителю.С помощью процедуры
Fracl можно найти несократимые дроби, равные a / b + c / d, a / b + e / f и a / b + g / h, где a, b, c, d, e, f, g, h - заданные числа.Proc48. Для решения этой задачи с использованием функции NOD2 из задания Proc46, опишем функцию NOK2(A, B), которая будет находить наименьшее общее кратное чисел A и B.
Proc49. Для решения этой задачи с использованием функции NOD2 из задания Proc46, опишем функцию NOD3(A, B, C), которая будет находить наибольший общий делитель трех чисел A, B, C.
Proc50. Для решения этой задачи опишем процедуру TimeToHMS(T, H, M, S), которая будет определять по времени T (в секундах) количество часов H, минут M и секунд S.
def NOD2(A, B):Для нахождения наименьших общих кратных пар (A, B), (A, C), (A, D), где даны числа A, B, C, D, можно вызвать функцию NOK2 для каждой пары чисел:
while B != 0:
A, B = B, A % B
return A
def NOK2(A, B):
GCD = NOD2(A, B)
return A * (B // GCD)
NOK_AB = NOK2(A, B)Теперь переменные NOK_AB, NOK_AC и NOK_AD содержат наименьшие общие кратные пар (A, B), (A, C), (A, D) соответственно.
NOK_AC = NOK2(A, C)
NOK_AD = NOK2(A, D)
Proc49. Для решения этой задачи с использованием функции NOD2 из задания Proc46, опишем функцию NOD3(A, B, C), которая будет находить наибольший общий делитель трех чисел A, B, C.
def NOD3(A, B, C):Для нахождения наибольших общих делителей троек (A, B, C), (A, C, D) и (B, C, D), где даны числа A, B, C, D, можно вызвать функцию NOD3 для каждой тройки чисел:
GCD_AB = NOD2(A, B)
GCD = NOD2(GCD_AB, C)
return GCD
NOD_ABC = NOD3(A, B, C)Теперь переменные NOD_ABC, NOD_ACD и NOD_BCD содержат наибольшие общие делители троек (A, B, C), (A, C, D) и (B, C, D) соответственно.
NOD_ACD = NOD3(A, C, D)
NOD_BCD = NOD3(B, C, D)
Proc50. Для решения этой задачи опишем процедуру TimeToHMS(T, H, M, S), которая будет определять по времени T (в секундах) количество часов H, минут M и секунд S.
def TimeToHMS(T):Для каждого отрезка времени T1, T2, ..., T5 можно вызвать процедуру TimeToHMS и передать соответствующее значение времени T:
H = T // 3600
T %= 3600
M = T // 60
S = T % 60
return H, M, S
H1, M1, S1 = TimeToHMS(T1)
H2, M2, S2 = TimeToHMS(T2)
...
H5, M5, S5 = TimeToHMS(T5)
Proc51. Для решения этой задачи с использованием функции IncTime(H, M, S, T), опишем процедуру IncTime, которая будет увеличивать время на заданное количество секунд.
Proc52. Для решения этой задачи с использованием функции IsLeapYear(Y), опишем функцию IsLeapYear, которая будет проверять, является ли заданный год високосным.
def IncTime(H, M, S, T):Теперь можно вызвать процедуру IncTime, передав значения часов H, минут M, секунд S и количество секунд T:
S += T
M += S // 60
S %= 60
H += M // 60
M %= 60
H %= 24
return H, M, S
H, M, S = IncTime(H, M, S, T)Теперь переменные H, M и S содержат новые значения часов, минут и секунд соответственно.
Proc52. Для решения этой задачи с использованием функции IsLeapYear(Y), опишем функцию IsLeapYear, которая будет проверять, является ли заданный год високосным.
def IsLeapYear(Y):Теперь можно вызвать функцию IsLeapYear для каждого из пяти заданных значений года Y:
if Y % 4 == 0 and (Y % 100 != 0 or Y % 400 == 0):
return True
else:
return False
leap_year1 = IsLeapYear(Y1)Теперь переменные leap_year1, leap_year2, ..., leap_year5 содержат значения True, если соответствующий год является високосным, и False в противном случае.
leap_year2 = IsLeapYear(Y2)
...
leap_year5 = IsLeapYear(Y5)
Proc53:
def IsLeapYear(Y):Proc54:
if Y % 4 == 0 and (Y % 100 != 0 or Y % 400 == 0):
return True
else:
return False
def MonthDays(M, Y):
if M < 1 or M > 12 or Y <= 0:
# Обработка ошибки или возврат значения по умолчанию
return -1
else:
if M in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif M in [4, 6, 9, 11]:
return 30
elif M == 2:
if IsLeapYear(Y):
return 29
else:
return 28
else:
# Обработка ошибки или возврат значения по умолчанию
return -1
def PrevDate(D, M, Y):Proc55:
if D < 1 or D > 31 or M < 1 or M > 12 or Y <= 0:
# Обработка ошибки или завершение процедуры
return
else:
D -= 1
if D < 1:
M -= 1
if M < 1:
M = 12
Y -= 1
D = MonthDays(M, Y)
return D, M, Y
def NextDate(D, M, Y):Примечание: В этих примерах предполагается, что функция IsLeapYear корректно реализована.
if D < 1 or D > 31 or M < 1 or M > 12 or Y <= 0:
# Обработка ошибки или завершение процедуры
return
else:
D += 1
if D > MonthDays(M, Y):
D = 1
M += 1
if M > 12:
M = 1
Y += 1
return D, M, Y
Proc56:
import mathProc57:
def Leng(xA, yA, xB, yB):
return math.sqrt((xA - xB)**2 + (yA - yB)**2)
def Perim(xA, yA, xB, yB, xC, yC):Proc58:
AB = Leng(xA, yA, xB, yB)
BC = Leng(xB, yB, xC, yC)
CA = Leng(xC, yC, xA, yA)
return AB + BC + CA
def Area(xA, yA, xB, yB, xC, yC):Примечание: В этих примерах предполагается, что значения координат точек A, B, C, D корректно передаются в функции Leng, Perim и Area.
AB = Leng(xA, yA, xB, yB)
BC = Leng(xB, yB, xC, yC)
CA = Leng(xC, yC, xA, yA)
p = Perim(xA, yA, xB, yB, xC, yC) / 2
return math.sqrt(p * (p - AB) * (p - BC) * (p - CA))
Proc59:
def Dist(xP, yP, xA, yA, xB, yB):Proc60:
S_PAB = Area(xP, yP, xA, yA, xB, yB)
AB = Leng(xA, yA, xB, yB)
D = 2 * S_PAB / AB
return D
# Пример использования функции Dist
Dist_AB = Dist(xP, yP, xA, yA, xB, yB)
Dist_AC = Dist(xP, yP, xA, yA, xC, yC)
Dist_BC = Dist(xP, yP, xB, yB, xC, yC)
def Heights(xA, yA, xB, yB, xC, yC):
hA = Dist(xA, yA, xB, yB, xC, yC)
hB = Dist(xB, yB, xA, yA, xC, yC)
hC = Dist(xC, yC, xA, yA, xB, yB)
return hA, hB, hC
# Пример использования процедуры Heights
hA_ABC, hB_ABC, hC_ABC = Heights(xA, yA, xB, yB, xC, yC)
hA_ABD, hB_ABD, hD_ABD = Heights(xA, yA, xB, yB, xD, yD)
hA_ACD, hC_ACD, hD_ACD = Heights(xA, yA, xC, yC, xD, yD)
👍2
Которые из этих блок решения вам понравилась ?
Anonymous Poll
43%
# begin
43%
# integer
43%
# boolean
57%
# If
57%
# case
43%
# while
57%
# for
43%
# proc
🔥2
Array1.
N = int(input("Введите целое число N: "))
array = [0] * N
num = 1
for i in range(N):
array[i] = num
num += 2
print("Сформированный массив:", array)
Array2. N = int(input("Введите целое число N: "))
array = [0] * N
num = 1
for i in range(N):
array[i] = num
num *= 2
print("Сформированный массив:", array)
Array3. N = int(input("Введите целое число N: "))
A = int(input("Введите первый член прогрессии A: "))
D = int(input("Введите разность прогрессии D: "))
array = [0] * N
current = A
for i in range(N):
array[i] = current
current += D
print("Сформированный массив:", array)👍1
Array4.
N = int(input("Введите целое число N (>1): "))
A = int(input("Введите первый член геометрической прогрессии A: "))
D = int(input("Введите знаменатель геометрической прогрессии D: "))
progression = [A] # Создаем пустой массив с первым элементом A
for i in range(1, N):
progression.append(progression[i-1] * D) # Добавляем следующий элемент в массив, умножая предыдущий на D
print("Массив размера N, содержащий N первых членов геометрической прогрессии:")
print(progression)
Array5. N = int(input("Введите целое число N (>2): "))
fibonacci = [1, 1] # Создаем массив с первыми двумя элементами
for i in range(2, N):
fibonacci.append(fibonacci[i-2] + fibonacci[i-1]) # Добавляем следующий элемент в массив, равный сумме двух предыдущих
print("Целочисленный массив размера N, содержащий N первых элементов последовательности чисел Фибоначчи:")
print(fibonacci)
Array6. N = int(input("Введите целое число N (>2): "))
A = int(input("Введите первый элемент A: "))
B = int(input("Введите второй элемент B: "))
sequence = [A, B] # Создаем массив с первыми двумя элементами
for i in range(2, N):
sequence.append(sum(sequence)) # Добавляем следующий элемент в массив, равный сумме всех предыдущих
print("Целочисленный массив размера N, первый элемент которого равен A, второй равен B, а каждый последующий элемент равен сумме всех предыдущих:")
print(sequence)👍1
Array 7.
def reverse_array(arr):Результат выполнения кода будет:
for i in range(len(arr)-1, -1, -1):
print(arr[i])
# Пример использования
array = [1, 2, 3, 4, 5]
reverse_array(array)
5Array 8.
4
3
2
1
def print_odd_numbers(arr):Результат выполнения кода будет:
count = 0
for i in range(len(arr)):
if arr[i] % 2 != 0:
print(arr[i])
count += 1
print("Количество нечетных чисел:", count)
# Пример использования
array = [1, 2, 3, 4, 5]
print_odd_numbers(array)
1Array 9.
3
5
Количество нечетных чисел: 3
def print_even_numbers(arr):Результат выполнения кода будет:
count = 0
for i in range(len(arr)-1, -1, -1):
if arr[i] % 2 == 0:
print(arr[i])
count += 1
print("Количество четных чисел:", count)
# Пример использования
array = [1, 2, 3, 4, 5]
print_even_numbers(array)
4
2
Количество четных чисел: 2