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

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

14.11.2023, 14:07. Показов 2738. Ответов 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
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,241
Записей в блоге: 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
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,241
Записей в блоге: 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,706
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,706
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
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
14.11.2023, 21:32
Цитата Сообщение от idealist Посмотреть сообщение
Вроде правильно считает
пп. 4-6 не реализованы, вот и возможная причина
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
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
38192 / 21125 / 4309
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru