0 / 0 / 0
Регистрация: 09.03.2023
Сообщений: 15

Между числами нужно расставить знаки + и × так, чтобы в результате получить нечетное число

09.03.2023, 08:56. Показов 8628. Ответов 33

Студворк — интернет-сервис помощи студентам
Сдать решение задачи B-Задача 2
Ограничение времени: 1 с
Ограничение реального времени: 5 с
Ограничение памяти: 64M
Знаки
Сидя на занятиях математики Азамат придумал себе следующую задачу дано число n и последовательность ai из n целых чисел, между числами нужно расставить знаки + и × так, чтобы в результате получить нечетное число. Например между числами 3, 5, 4 можно расставить знаки следующим образом: 3 × 5 + 4 = 19. Помогите Азамату написать программу для решения данной задачи.

Формат входных данных
В первой строке содержится единственное число n (2 ≤ n ≤ 10^5 ).

Во второй строке содержится n целых чисел ai, разделённых пробелами (−10^9 ≤ ai ≤ 10^9 ).

Гарантируется, что решение существует.

Формат результата
В одной строке выведите n − 1 символ + или ×, в результате применения которых получается нечётный результат. (Для вывода используйте соответственно знаки «+» (ASCII код—43) и «x» (ASCII код—120), без кавычек).


Примеры
Входные данные
3
5 7 2
Результат работы
x+
Входные данные
2
4 -5
Результат работы
+

Добавлено через 1 минуту
вот решение мое, оно было не принято
Python
1
2
3
4
5
6
7
8
9
10
n = int(input())
a = list(map(int, input().split()))
 
if 0 in a:
    print("x" * (n-1))
else:
    if any(num % 2 != 0 for num in a):
        print("x" * (n-2) + "+")
    else:
        print("x" * (n-1))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2023, 08:56
Ответы с готовыми решениями:

Расставить знаки между числами от 1 до 9, чтобы получить заданное число
Доброе время суток. Помогите разобраться с задачей, пожалуйста. Нужно расставить знаки "+", "-" между числами от 1...

Между заданными числами расставить знаки сложения и вычитания так, чтобы в итоге получилось указанное число
Простая задачка из школьной олимпиады (задача на асмп №366). У меня превышает лимит времени. Если есть другие пути поделитесь пж ...

Расставить знаки операций между тремя числами так, чтобы результат вычисления выражения был минимальным
Вы наверняка уже знаете, что Алексей — серьёзный математик, и он любит решать серьёзные задачи. Вот ещё одна из этих задач. Даны три...

33
0 / 0 / 0
Регистрация: 09.03.2023
Сообщений: 15
09.03.2023, 12:27  [ТС]
Студворк — интернет-сервис помощи студентам
Red white socks, 165 номер решения

Добавлено через 40 секунд
Red white socks, номер решения 165

Добавлено через 10 минут
я тут попробовал одно решение
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
n = int(input())
a = list(map(int, input().split()))
 
result = a[0]  # начальное значение результата
 
for i in range(1, n):
    # генерируем все возможные комбинации знаков + и × между предыдущим результатом и текущим числом
    for op in ['+', '*']:
        # вычисляем результат текущей комбинации
        if op == '+':
            new_result = result + a[i]
        else:
            new_result = result * a[i]
        # если результат нечетный, то мы нашли нужную комбинацию знаков и можем завершить циклы
        if new_result % 2 == 1:
            print(op, end='')
            result = new_result
            break
    else:
        # если цикл for не был прерван с помощью break, значит все комбинации дали четный результат
        # в этом случае мы можем выбрать любую комбинацию знаков, например, только +
        print('+', end='')
        result += a[i]
 
print()
вывело что я не прошел тест 6
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
09.03.2023, 12:36
Единственно, что может быть «не так» - операции выполняются не по правилам математики, а последовательно:
Python
1
2
3
4
5
6
7
8
9
n = int(input())
a =  list(map(int, input().split()))
res = chr(43) * (n - 1)
if not sum(a)%2:
    for i, v in enumerate(a[::-1]):
        if v % 2 == 1:
            break
    res = res[:n-i-2] + chr(120) + res[n-i-1:]
print(res)
0
0 / 0 / 0
Регистрация: 09.03.2023
Сообщений: 15
09.03.2023, 12:37  [ТС]
Gdez, он выдал ошибку на тесте 4. Возможно есть еще какие либо условия, которые должны проверять код
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.03.2023, 12:39
BeastBoy2209, в коде Gdez поставьте chr(42) вместо chr(120)
0
0 / 0 / 0
Регистрация: 09.03.2023
Сообщений: 15
09.03.2023, 12:43  [ТС]
Red white socks, ошибка в тесте 1
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.03.2023, 12:58
Цитата Сообщение от Gdez Посмотреть сообщение
Единственно, что может быть «не так» - операции выполняются не по правилам математики, а последовательно:
Судя по решению с непрошедшим 6 тестом - так и есть. Умножение нужно поставить перед нечетным числом

Добавлено через 5 минут
Вот это попробуйте
Python
1
2
3
4
5
6
7
8
9
10
n = int(input())
a =  list(map(int, input().split()))
res = chr(43) * (n - 1)
if not sum(a)%2:
    for i, v in enumerate(a):
        if v % 2 == 1:
            break
    i = max(0, i-1)
    res = res[:i] + chr(120) + res[i+1:]
print(res)
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
09.03.2023, 12:58
Red white socks, в крайнем коде вроде так и есть.
P.s. ТС лукавит по поводу пройденных пяти тестов - у него в коде знак ‘*’ -> chr(42)
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.03.2023, 13:05
Цитата Сообщение от Gdez Посмотреть сообщение
P.s. ТС лукавит по поводу пройденных пяти тестов - у него в коде знак ‘*’ -> chr(42)
Именно поэтому я и попросил поставить звездочку в ваш код)) Тут загадок как в докторе Хаусе - верить нельзя никому)
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
09.03.2023, 14:19
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
while 1:
    n = input("Введите единственное число элементов 2≤n≤10^5 или 'q' для выхода : ")
    if n=='q':
        break
    
    n = int(n)
    if not 2<=n<=10**5:
        # Не выполнено условие 2≤n≤10^5
        print('Условие не выполнено')
        continue
    
    a = list(map(int, input('Введите n целых чисел −10^9≤num≤10^9, через пробел: ').split()))
    if len(a)!=n:
        # Не совпадает количество введенных чисел с указателем числа элементов n
        print('Условие не выполнено')
        break
    q,o = False,True
    for num in a:
        if not (-10**9)<=num<=10**9:
            # Не выполнено условие −10^9≤num≤10^9
            q = True
            break
        elif num%2!=0:
            # Наличие гарантированности результата (одно или больше нечетное число в списке)
            o = False
    
    if q or o:
        print('Условия не выполнены')
        continue
 
    eo,res = 0,''
    for i,item in enumerate(a):
        if eo==0 and i==0:
            eo += item
        elif item%2!=0 and eo%2!=0:
            eo *= item
            res += chr(120)
        else:
            eo += item
            res += chr(43)
 
    print(res)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
09.03.2023, 14:22
Red white socks, а если надо (как в задании сказано) ставить именно 'х', то это 'х' или 'x'? Русский или английский язык? Вот тоже вопрос!
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.03.2023, 14:29
Parramon, там вроде как сказали, что икс должен латинским быть - ASCII 120
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
09.03.2023, 14:32
Цитата Сообщение от Parramon Посмотреть сообщение
Русский или английский язык? Вот тоже вопрос!
Так ведь:
Цитата Сообщение от BeastBoy2209 Посмотреть сообщение
«+» (ASCII код—43) и «x» (ASCII код—120), без кавычек)
0
0 / 0 / 0
Регистрация: 10.03.2023
Сообщений: 1
10.03.2023, 14:05
Я решил но у меня ошибки в тесте 6 показывает. Почти решил очень близко.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
n = int(input())
a = list(map(int, input().split()))
cnt=0
for i in range(n):
    if a[i]%2:
        cnt+=1
if cnt ==0:
    print(1)
else:
    k = a[0]
    for i in range(1,n):
        if (abs(a[i])*abs(k))%2:
            k*=a[i]
            print("x",end="")
        else:
            if (abs(a[i])+abs(k))%2:
                print("+",end="")
                k+=a[i]
            else:
                print("x",end="")
                k*=a[i]
0
0 / 0 / 0
Регистрация: 10.03.2023
Сообщений: 1
10.03.2023, 14:54
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
n=int(input())
l=input().split()
su=0
um=1
for i in l:
    su+=int(i)
    um*=int(i)
if su%2!=0:
    print('+')
elif um%2!=0:
    print('x')
else:
    print('x+')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2023, 14:54

Расставить между числами знаки + и * так, чтобы значение получившегося выражения было равно заданному целому S
Даны N целых чисел X1, X2,...,Xn. Расставить между ними + и * так ,чтобы значение получившегося выражения было равно заданному целому S. ...

Расставить между числами знаки + и - так, чтобы значение получившегося выражения было равно заданному целому S
Даны N целых чисел X1, X2, …, XN. Требуется расставить между ними знаки + и - так, чтобы значение получившегося выражения было равно...

Расставить знаки между цифрами так, чтобы получилось заданное число
Помогите разобраться с алгоритмом. Вот задача: Имеются цифры 1, 2, 3, 4, 5, 6, 7, 8, 9. Необходимо расставить между ними любое...

Расставить между членами последовательности знаки +, -, *, /, так, чтобы получилось заданное число
Помогите решить задачу. Не понимаю как её решить. Дана последовательность из N цифр. Необходимо расставить между ними знаки +, -, *, /,...

Расставить знаки арифметических операций между цифрами числа A, чтобы получить число B
Заданы два целых положительных числа A и B. Расставьте знаки арифметических операций (+, -, *, /) между цифрами числа A, чтобы получить...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Опции темы

Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru