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

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

03.09.2022, 20:45. Показов 1452. Ответов 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
Сообщений: 937
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
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,699
Записей в блоге: 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
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
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
Сообщений: 937
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
Сообщений: 937
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru