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

Забор и числа, простая версия

03.09.2022, 20:45. Показов 1495. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проходя мимо барского забора, Антипа увидел выражение вида: ? a1 ? a2 ? ... ? an =  b. Откуда оно там взялось, неизвестно. Наверное, какие-то дети баловались и рисовали странные неизвестные символы.

Ему стало интересно, можно ли заменить в нем вопросительные знаки на плюсы или минусы так, чтобы оно стало верным. К сожалению, Антипа не очень хорошо считает, поэтому удивителен даже сам тот факт, что ему пришла в голову такая мысль, если он не может понять ее смысла.

Однако, для вас этот вопрос явно должен звучать осмысленным, так что помогите Антипе найти такое решение или указать, что его не существует. Пока Антипа не получит ответ на свой непонятный вопрос, скорее всего, у него не получится хорошо выспаться перед тем, как отправиться в очередное путешествие.

----------------------------------------------------------
Входные данные:
Первая строка ввода содержит целые числа n и b — количество слагаемых и конечный результат вычисления выражения (1 ≤ n ≤ 10,  - 1000 ≤ b ≤ 1000).

Во второй строке через пробел перечислены n целых чисел ai (1 ≤ ai ≤ 100).


Выходные данные:
Если решение существует, выведите полученное выражение, отделяя операторы от чисел пробелами. Если решения нет, выведите строку Impossible.
------------------------------------------------------------

Пример:
входные данные:
4 9
6 4 5 2
выходные данные:
+ 6 - 4 + 5 + 2

Добавлено через 1 час 45 минут
можно сделать перебором
2 в 10 степени это 1024 варианта времени хватит, все варианты проверять и если ни один не получилось то выводим что нельзя.


подскажите как сделать перебором?

или может кто-то знае
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2022, 20:45
Ответы с готовыми решениями:

Linux. с++. Простая версия программы rm
Помогите написать программу! Простая версия программы rm По ключу -i Спрашивает подтверждение на удаление файла По ключу -d удаляет...

E1. AquaMoon и остановка времени (простая версия)
Возможно, иногда некоторые слова вроде «localization» или «internationalization» настолько длинны, что их весьма утомительно писать много...

Комплексные числа, простая задача
Реализуйте класс комплексных чисел ComplexNumber, которые можно складывать, умножать и сравнивать на равенство с помощью операторов....

13
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.09.2022, 21:11
Цитата Сообщение от Enldar_Spb78 Посмотреть сообщение
как сделать перебором?
Вариантов тьма
Python
1
2
3
4
5
6
7
8
import exrex
 
n, x = map(int, input().split())
s = ''.join(f'%s{i}' for i in input().split())
for i in exrex.generate(r'[-+]{%s}' % n):
    expr = s % tuple(i)
    if eval(expr) == x:
        print(expr)
3
2 / 2 / 0
Регистрация: 17.05.2022
Сообщений: 33
03.09.2022, 21:26  [ТС]
А как сделать чтобы при отсутвиии вариантов выпадал вариант Impossible?

Добавлено через 1 минуту
а все я понял

Добавлено через 2 минуты
Но там же надо чтобы через пробел выводилось
не
"+1+2+3+4"
а
"+ 1 + 2 + 3 + 4"
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.09.2022, 21:27
Enldar_Spb78, блин, чувак, ты вообще учиться собираешься? Или так, лишь бы сдать?
Кстати, этот вариант у тебя не примут
Python
1
2
3
4
5
6
7
8
9
10
11
12
import exrex
 
n, x = map(int, input().split())
s = ''.join(f'%s{i}' for i in input().split())
err = True
for i in exrex.generate(r'[-+]{%s}' % n):
    expr = s % tuple(i)
    if eval(expr) == x:
        print(expr)
        err = False
if err:
    print('Impossible')
Добавлено через 1 минуту
Цитата Сообщение от Enldar_Spb78 Посмотреть сообщение
Но там же надо
Python
1
print(' '.join(expr))
2
2 / 2 / 0
Регистрация: 17.05.2022
Сообщений: 33
03.09.2022, 21:47  [ТС]
а почему не примут

Добавлено через 2 минуты
да кстати не приняли а что там такого?

Добавлено через 9 минут
Python
1
2
3
4
5
6
7
8
9
10
11
import exrex
n, x = map(int, input().split())
s = ''.join(f'%s{i}' for i in input().split())
err = True
for i in exrex.generate(r'[-+]{%s}' % n):
    expr = s % tuple(i)
    if eval(expr) == x:
        print(' '.join(expr))
        err = False
if err:
    print('Impossible')
Вообщем я вот так сделал все равно не заходит ошибка какая-то на 1 тесте, хотя в компиляторе все работает
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.09.2022, 21:58
Цитата Сообщение от Enldar_Spb78 Посмотреть сообщение
да кстати не приняли
пащщимуу???

Патамушта библиотека не встроенная
0
2 / 2 / 0
Регистрация: 17.05.2022
Сообщений: 33
03.09.2022, 22:08  [ТС]
ого прикольно
И что можно с этим сделать?
может алгоритм перебора + и - нужно както поменять
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.09.2022, 22:40
Цитата Сообщение от Enldar_Spb78 Посмотреть сообщение
И что можно с этим сделать?
Использовать встроенную. itertools.combinations например.
Или вообще на циклах написать. Вариантов масса.
0
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
03.09.2022, 23:23

Не по теме:

Цитата Сообщение от Enldar_Spb78 Посмотреть сообщение
Проходя мимо барского забора
Мимо тещиного дома я без шуток не хожу... Сектор газа... Эх...Ностальгия



Я бы что то такое сделал бы)

Не по теме:

Скопировал бы у iSmokeJC и допилил напильником



Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from itertools import combinations
 
n, x = map(int, input().split())
s = ''.join(f'%s{i}' for i in input().split())
set_sign = set(combinations('+-'* int(len(s)/3), int(len(s)/3)))
err = True
 
for sign in set_sign:
    if eval(s % sign) == x:
        print(' '.join(s % sign))
        err = False
if err:
    print('Impossible')
Добавлено через 7 минут
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Кстати, этот вариант у тебя не примут
Колдун однако
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
04.09.2022, 08:25
Честное решение:

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
41
42
43
44
45
46
47
def foo(n,arr,res):
    
    op=[0 for _ in range(n)]
    succ=0
    
    while True:
        
        tmp=0
        i=0
        for o in op:
            if o==0:
                tmp+=arr[i]
            else:
                tmp-=arr[i]
            i+=1
        
        if res==tmp:
            succ+=1
            i=0
            for o in op:
                if o==0:
                    print("+",arr[i],end=' ',sep=' ')
                else:
                    print("-",arr[i],end=' ',sep=' ')
                i+=1
 
            return    # Если нужно найти все решения, закомментируй этот оператор 
        
        p=0
        
        while True:
            if op[p]==0:
                op[p]=1
                break
            op[p]=0
            p+=1
            if (p >= n):
                if succ==0:
                    print("impossible")
                return
        
def start():
    n,r=map(int,input().split())
    arr=list(map(int,input().split()))
    foo(n,arr,r)
 
start()
3
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,762
04.09.2022, 08:44
Python
1
2
3
4
5
6
7
8
9
10
n, x = map(int, input().split())
s = [int(i) for i in input().split()]
def solution(n, x, s):
    for k in range(2**n):
        sign=[(1, -1)[i=='0'] for i in f'{k:0{n}b}' ]
        res=sum(i*j for i,j in zip(s, sign))
        if res==x:
            return ' '.join([' +-'[j]+' '+ str(i) for i, j in zip(s, sign)])
    return 'Impossible'
print(solution(n, x, s))
4
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
04.09.2022, 11:19
u235, объясните, пожалуйста, как работает эта строчка?
Python
1
sign=[(1, -1)[i=='0'] for i in f'{k:0{n}b}' ]
Почему там появляется список из +1 и -1 во всех вариациях?
Почему range(2**n)?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.09.2022, 11:56
u235, кросавчег!
Михалыч, перебирается двоичное представление чисел из цикла. Вот тебе все вариации единиц и нулей (читай - плюсов и минусов). А двойка в степени н - это "ограничение длины" битового представления.
Повторюсь, u235, кросавчег!
2
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
04.09.2022, 12:12
Цитата Сообщение от iSmokeJC Посмотреть сообщение
перебирается двоичное представление чисел из цикла. Вот тебе все вариации единиц и нулей (читай - плюсов и минусов). А двойка в степени н - это "ограничение длины" битового представления.
Спасибо, надо будет почитать про это!)

Не по теме:

Это мы не проходили, это нам не задавали))))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2022, 12:12
Помогаю со студенческими работами здесь

Простая математика - отгадать числа
Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. Петя помогает Кате по математике. Он задумывает два натуральных числа X и...

Простая арифметика: сложить два числа
Одно поле для цифр. Три кнопки. Одна – запомнить, вторая – сложить (при нажатии в поле результат), третья – среднее арифметическое (при...

Какая версия Apache подходит для windows10 ? (версия 2.2.14 не работает)
Подскажите,пожалуйста,какая версия Apache подходит для windows10. При переходе с windows 7 на windows 10 установленная версия 2.2.14 не...

Китайский JTAG RealView ULINK2 версия прошивки и версия Keil
Есть китайский клон 20-pin JTAG очень похожий на Keil-вый. Какую версию Keil с ним можно использовать? Или что поправить чтоб работало? ...

Какая версия версия GCC сейчас самая безглючная?
Собираю проект. Проект заведомо рабочий. а у меня, почему-то он не работает. На проверенной плате. Может у меня версия GCC какая-то...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru