С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60

Бином Ньютона

14.11.2023, 14:07. Показов 2617. Ответов 15

Студворк — интернет-сервис помощи студентам
Приветствую!

Ссылка на задачу:
https://stepik.org/lesson/4580... nit=448538

Задача такая:
Ученик Евгений изучает формулы сокращенного умножения, однако он узнал, что он может не учить их и запомнить формулу Бинома Ньютона. Для того, чтобы не вычислять n-ую степень Бинома Ньютона, Евгений попросил вас написать программу для вывода формулы.

Помогите ученику, написав программу, которая выводит Бином Ньютона n-ой степени.

На вход программе вводится строка n, условия к которой прописаны ниже.

Программа должна вывести Бином Ньютона n-ой.

Пример вывода программы:

(a + b)^3 = a^3 + 3 * a^2 * b + 3 * a * b^2 + b^3

Степень обозначается символом (^) и не отделяется от основания
Знаки сложения (+) и умножения (*) отделяется от любого слагаемого пробелом
Знак равно (=) тоже отделяется от любой из двух частей выражения пробелом
Если степень равна 1, то её выводить не нужно
Если пользователь введёт строку, у которой длина равна 1, то нужно вывести: (a + b)^n = (a + b)^n, где n - введённая буква
Но если пользователь введёт строку, длина которой не равна 1 и если строка не является буквой или числом, то нужно вывести: Ошибка
Sample Input:

2
Sample Output:

(a + b)^2 = a^2 + 2 * a * b + b^2

Решение задачи которое нагенерил BingAI:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from math import factorial
 
def binomial_coefficient(n, k):
    return factorial(n) / (factorial(k) * factorial(n - k))
 
def newton_binom(n):
    formula = "(a + b)"
    if n != 1:
        formula += "^" + str(n)
    formula += " = "
    for k in range(n + 1):
        coeff = binomial_coefficient(n, k)
        if coeff != 1:
            formula += str(int(coeff)) + " * "
        if n - k != 0:
            formula += "a"
            if n - k != 1:
                formula += "^" + str(n-k)
            if k != 0:
                formula += " * "
        if k != 0:
            formula += "b"
            if k != 1:
                formula += "^" + str(k)
        if k != n:
            formula += " + "
    return formula
 
try:
    n = int(input())
    print(newton_binom(n))
except ValueError:
    print("Ошибка")
Не проходит третий тест:
Failed test #3 of 18. Wrong answer
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2023, 14:07
Ответы с готовыми решениями:

Бином Ньютона, или Треугольник Паскаля
Треугольник Паскаля — это последовательность рядов чисел, которые строятся по следующему принципу: первый ряд состоит из одного числа 1,...

Бином Ньютона, или Треугольник Паскаля
Tреугольник Паскаля — это последовательность рядов чисел, которые строятся по следующему принципу: первый ряд состоит из одного числа 1,...

Бином Ньютона
http://content.foto.mail.ru/mail/punkvalera/_answers/i-18.jpg http://content.foto.mail.ru/mail/punkvalera/_answers/i-20.jpg как...

15
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60
14.11.2023, 14:10  [ТС]
Скриншот задания



Запрос который отправил нейронке (изменена формулировка задачи в конце):

Ученик Евгений изучает формулы сокращенного умножения, однако он узнал, что он может не учить их и запомнить формулу Бинома Ньютона. Для того, чтобы не вычислять n-ую степень Бинома Ньютона, Евгений попросил вас написать программу для вывода формулы.
Помогите ученику, написав программу, которая выводит Бином Ньютона n-ой степени.
На вход программе вводится строка n, условия к которой прописаны ниже.
Программа должна вывести Бином Ньютона n-ой.

Формула Бинома Ньютона:
https://www.cyberforum.ru/cgi-bin/latex.cgi?{(a+b)}^{n}=\sum_{k=0}^{n}{{C}_{n}}^{k}{a}^{n-k}{b}^{k}

Чтобы найти Биноминальный коэффициент нужно использовать такую формулу:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{{C}_{n}}^{k}=\frac{n!}{k!(n-k)!}

Факториал (!) - можно импортировать в программу(подключить к программе) с помощью модуля math с помощью такого кода:
from math import factorial
Факториал (!) - это математическая функция, определяемая, как умножение чисел от 1 до n:
5! = 1 * 2 * 3 * 4 * 5 = 120
Факториал обладает таким свойством:
n! = (n + 1)! / (n + 1)
Поэтому:
0! = (0 + 1)! / (0 + 1) = 1! / 1 = 1
Обратите внимание на то, что:
Степень обозначается символом (^) и не отделяется от основания
Знаки сложения (+) и умножения (*) отделяется от любого слагаемого пробелом
Знак равно (=) тоже отделяется от любой из двух частей выражения пробелом
Если степень равна 1, то её выводить не нужно
Если пользователь введёт 1, то нужно вывести: (a + b)^n = (a + b)^n, где n - введённое значение
Но если пользователь введёт строку и если строка не является числом, то нужно вывести: Ошибка

Sample Input:
2

Sample Output:
(a + b)^2 = a^2 + 2 * a * b + b^2

Sample Input:
3

Sample Output:
(a + b)^3 = a^3 + 3 * a^2 * b + 3 * a * b^2 + b^3
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.11.2023, 16:13
Цитата Сообщение от Dagdarion Посмотреть сообщение
которое нагенерил BingAI:
Цитата Сообщение от Dagdarion Посмотреть сообщение
formula += str(int(coeff)) + " * "
Сжечь напалмом
1
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60
14.11.2023, 17:04  [ТС]
iSmokeJC,
Я вообще без понятия что такое бином Ньютона.
Пробовал закинуть в chatGPT, но он вообще не туда пошел, а вот Bing более менее что то да выдал.
И вот обращаюсь к знающим Гуру с вопросом 'Как решить эту задачу!?'
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
14.11.2023, 17:57
Ради спортивного интереса
Python
1
2
3
4
5
6
7
8
9
from math import comb
n = 5  # Степень
y = ''
 
for k in range(n+1):
    y += f' + {comb(n, k)}a^{n-k}b^{k}'
    
y = y[4:].replace('b^0','').replace('a^0','').replace('^1','').replace('1b','b')
print(y)
1
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60
14.11.2023, 18:34  [ТС]
VistaSV30,
попробовал ваш код запустить на платформе степик и вот что вышло
В самом задании, кроме как python 3.6, нет возможности использовать другие версии.
Миниатюры
Бином Ньютона   Бином Ньютона  
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
14.11.2023, 18:37
Dagdarion, нужно писать код с использованием функции factorial, comb видимо сам степик не дает запускать
0
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60
14.11.2023, 18:51  [ТС]
VistaSV30,
вывод вашей программы в VSCode:

n = 2 # Степень

a^2 + 2ab + b^2

а должно быть так:
(a + b)^2 = a^2 + 2 * a * b + b^2

n = 3 # Степень

a^3 + 3a^2b + 3ab^2 + b^3

а должно быть так:
(a + b)^3 = a^3 + 3 * a^2 * b + 3 * a * b^2 + b^3

Добавлено через 2 минуты
Я про этот бином только сегодня узнал. Не понимаю как решать такие задачи.
Большое спасибо, если кто просветит))))))))))
0
14.11.2023, 20:11

Не по теме:

Dagdarion, дальше пишите в личку (за чашечку кофе), если хотите

0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
14.11.2023, 20:14
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from operator import add
 
def binom_coeffs(n):
    arr = [1]
    for i in range(n):
        *arr, = map(add, [0] + arr, arr + [0])
    return arr
 
n = int(input('n = '))
res = f'(a + b)^{n} = '
coeffs = binom_coeffs(n)
terms = []
for i in range(n+1):
    L = n-i
    R = i
    factors = []
    if not n or coeffs[i] != 1:
        factors.append(str(coeffs[i]))
    if L:
        s = 'a' if L==1 else f'a^{L}'
        factors.append(s)
    if R:
        s = 'b' if R==1 else f'b^{R}'
        factors.append(s)
    terms.append(' * '.join(factors))
res += ' + '.join(terms)
print(res)
2
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60
14.11.2023, 20:45  [ТС]
idealist,
Спасибо! Теперь застряли на 10 тесте. Уже что то да двигается))))))))
Failed test #10 of 18. Wrong answer
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from operator import add
 
def binom_coeffs(n):
    arr = [1]
    for i in range(n):
        *arr, = map(add, [0] + arr, arr + [0])
    return arr
 
n = input()
if not n.isdigit():
    print('Ошибка')
else:
    n = int(n)
    res = f'(a + b)^{n} = '
    coeffs = binom_coeffs(n)
    terms = []
    for i in range(n+1):
        L = n-i
        R = i
        factors = []
        if not n or coeffs[i] != 1:
            factors.append(str(coeffs[i]))
        if L:
            s = 'a' if L==1 else f'a^{L}'
            factors.append(s)
        if R:
            s = 'b' if R==1 else f'b^{R}'
            factors.append(s)
        terms.append(' * '.join(factors))
    res += ' + '.join(terms)
    print(res)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
14.11.2023, 21:06
Цитата Сообщение от Dagdarion Посмотреть сообщение
Теперь застряли на 10 тесте.
Вроде правильно считает. Может в тестах какая-то ошибка?
А нулевую степень они правильно считают?
Должно быть так:
Python
1
2
n = 0
(a + b)^0 = 1
1
1 / 1 / 0
Регистрация: 18.03.2023
Сообщений: 60
14.11.2023, 21:25  [ТС]
idealist,
из условии задания

Если пользователь введёт строку, у которой длина равна 1, то нужно вывести: (a + b)^n = (a + b)^n, где n - введённая буква

Факториал обладает таким свойством:
n! = (n + 1)! / (n + 1)
Поэтому:
0! = (0 + 1)! / (0 + 1) = 1! / 1 = 1

Посмотрим, может выйдет что нибудь)))))))))))

Добавлено через 12 минут
Премного Благодарен человеку под ником 'VitorioZanzara' за решение данной задачи!!!!!
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from math import factorial as f
 
def binom(n):
    if not isinstance(n, int):
        if not n.isalpha() or len(n) != 1:
            return 'Ошибка'
        else:
            return f'(a + b)^{n} = (a + b)^{n}'
 
    res = []
    nf = f(n)
    for k in range(n + 1):
        ck = nf // (f(n - k) * f(k))
        nk = n - k
        a_pow = f"^{nk}" if nk > 1 else ''
        b_pow = f"^{k}" if k > 1 else ''
        s1 = f'a{a_pow}' if nk else ''
        s2 = f'b{b_pow}' if k else ''
        mid = ' * ' if s1 and s2 else ''
        front = str(ck) if s1 and s2 else ''
        res.append(f'{front}{mid}{s1}{mid}{s2}')
 
    return f"(a + b)^{n} = {' + '.join(res) or 1}"
 
x = input()
print(binom(int(x) if x.isdigit() else x))
0
Вирусоборец
 Аватар для thyrex
14439 / 7481 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
14.11.2023, 21:32
Цитата Сообщение от idealist Посмотреть сообщение
Вроде правильно считает
пп. 4-6 не реализованы, вот и возможная причина
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
14.11.2023, 21:45
Цитата Сообщение от Dagdarion Посмотреть сообщение
Если пользователь введёт строку, у которой длина равна 1, то нужно вывести: (a + b)^n = (a + b)^n, где n - введённая буква
А, пардон, не заметил этого, вот так должно работать:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from operator import add
 
def binom_coeffs(n):
    arr = [1]
    for i in range(n):
        *arr, = map(add, [0] + arr, arr + [0])
    return arr
 
def get_binom(n):
    if n == 1:
        return f'(a + b)^{n} = (a + b)^{n}'
    res = f'(a + b)^{n} = '
    coeffs = binom_coeffs(n)
    terms = []
    for i in range(n + 1):
        L = n - i
        R = i
        factors = []
        if not n or coeffs[i] != 1:
            factors.append(str(coeffs[i]))
        if L:
            s = 'a' if L == 1 else f'a^{L}'
            factors.append(s)
        if R:
            s = 'b' if R == 1 else f'b^{R}'
            factors.append(s)
        terms.append(' * '.join(factors))
    res += ' + '.join(terms)
    return res
 
s = input('s->')
if len(s) == 1 and s.isalpha():
    res = f'(a + b)^{s} = (a + b)^{s}'
    print(res)
else:
    try:
        n = int(s)
        print(get_binom(n))
    except:
        print('Ошибка')
В 21:43 еще внес изменение.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
14.11.2023, 22:22

Не по теме:

iSmokeJC, Вы почитайте, что пишет ТС... "Я вообще без понятия что такое бином Ньютона. Пробовал закинуть в chatGPT, но он вообще не туда пошел, а вот Bing более менее что то да выдал. И вот обращаюсь к знающим Гуру с вопросом 'Как решить эту задачу!?'



Добавлено через 28 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def bin_coeff(n):
    arr=[]
    for _ in range(n):
        tmp=[]
        for i in range(1,len(arr)):
            tmp.append(arr[i-1]+arr[i])
        arr=[1]+tmp+[1]
    return arr
    
n=int(input("n="))
arr=bin_coeff(n)
 
res=""
 
for k in range(0,n+1):
    if k == 0:
        mon="a^"+str(n)
    elif k == n:
        mon="b^"+str(n)
    else:
        mon=str(arr[k])
        
        if k==1:
            p1=""
        else:
            p1="^"+str(k)
 
        if n-k==1:
            p2=""
        else:
            p2="^"+str(n-k)
 
        mon=str(arr[k])+"a"+p1+"b"+p2
 
    if k < n:
        res=res+mon+"+"
    else:
        res=res+mon
 
print(res)
Кликните здесь для просмотра всего текста


Code
1
2
n=100
a^100+100ab^99+4950a^2b^98+161700a^3b^97+3921225a^4b^96+75287520a^5b^95+1192052400a^6b^94+16007560800a^7b^93+186087894300a^8b^92+1902231808400a^9b^91+17310309456440a^10b^90+141629804643600a^11b^89+1050421051106700a^12b^88+7110542499799200a^13b^87+44186942677323600a^14b^86+253338471349988640a^15b^85+1345860629046814650a^16b^84+6650134872937201800a^17b^83+30664510802988208300a^18b^82+132341572939212267400a^19b^81+535983370403809682970a^20b^80+2041841411062132125600a^21b^79+7332066885177656269200a^22b^78+24865270306254660391200a^23b^77+79776075565900368755100a^24b^76+242519269720337121015504a^25b^75+699574816500972464467800a^26b^74+1917353200780443050763600a^27b^73+4998813702034726525205100a^28b^72+12410847811948286545336800a^29b^71+29372339821610944823963760a^30b^70+66324638306863423796047200a^31b^69+143012501349174257560226775a^32b^68+294692427022540894366527900a^33b^67+580717429720889409486981450a^34b^66+1095067153187962886461165020a^35b^65+1977204582144932989443770175a^36b^64+3420029547493938143902737600a^37b^63+5670048986634686922786117600a^38b^62+9013924030034630492634340800a^39b^61+13746234145802811501267369720a^40b^60+20116440213369968050635175200a^41b^59+28258808871162574166368460400a^42b^58+38116532895986727945334202400a^43b^57+49378235797073715747364762200a^44b^56+61448471214136179596720592960a^45b^55+73470998190814997343905056800a^46b^54+84413487283064039501507937600a^47b^53+93206558875049876949581681100a^48b^52+98913082887808032681188722800a^49b^51+100891344545564193334812497256a^50b^50+98913082887808032681188722800a^51b^49+93206558875049876949581681100a^52b^48+84413487283064039501507937600a^53b^47+73470998190814997343905056800a^54b^46+61448471214136179596720592960a^55b^45+49378235797073715747364762200a^56b^44+38116532895986727945334202400a^57b^43+28258808871162574166368460400a^58b^42+20116440213369968050635175200a^59b^41+13746234145802811501267369720a^60b^40+9013924030034630492634340800a^61b^39+5670048986634686922786117600a^62b^38+3420029547493938143902737600a^63b^37+1977204582144932989443770175a^64b^36+1095067153187962886461165020a^65b^35+580717429720889409486981450a^66b^34+294692427022540894366527900a^67b^33+143012501349174257560226775a^68b^32+66324638306863423796047200a^69b^31+29372339821610944823963760a^70b^30+12410847811948286545336800a^71b^29+4998813702034726525205100a^72b^28+1917353200780443050763600a^73b^27+699574816500972464467800a^74b^26+242519269720337121015504a^75b^25+79776075565900368755100a^76b^24+24865270306254660391200a^77b^23+7332066885177656269200a^78b^22+2041841411062132125600a^79b^21+535983370403809682970a^80b^20+132341572939212267400a^81b^19+30664510802988208300a^82b^18+6650134872937201800a^83b^17+1345860629046814650a^84b^16+253338471349988640a^85b^15+44186942677323600a^86b^14+7110542499799200a^87b^13+1050421051106700a^88b^12+141629804643600a^89b^11+17310309456440a^90b^10+1902231808400a^91b^9+186087894300a^92b^8+16007560800a^93b^7+1192052400a^94b^6+75287520a^95b^5+3921225a^96b^4+161700a^97b^3+4950a^98b^2+100a^99b+b^100
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2023, 22:22
Помогаю со студенческими работами здесь

Бином Ньютона
(x3+x2-2x+2)6 При к=6. Помогите найти, не могу разобраться как идет вычисление((.

Бином Ньютона
раскрыть скобки (a-b-9)^2 используя обобщенную формулу бинома ньютона. Объясните как это делать

Бином Ньютона
В каком из выражений (1+x^2-x^3)^1000 или (1+x^2+x^3)^1000 будет после раскрытия скобок больший коэффициент при x^17. Полное решение.

Бином Ньютона.
Бином Ньютона. Для заданных m и х вычислить бином Ньютона (1+х)^m непосредственно и по формуле разложения в ряд: m ...

Бином Ньютона
Форумчане, помогите решить такую задачку, пожалуйста: написать программу реализующую вычисление биномиальных коэффициентов как целых чисел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru