2 / 2 / 0
Регистрация: 17.05.2022
Сообщений: 33

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

03.09.2022, 20:45. Показов 1461. Ответов 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
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru