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

Задача с codeforces "Подарки"

01.03.2023, 19:27. Показов 5219. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите решить задачу с кодфорса

Маленький Петя очень любит подарки. Недавно мама подарила ему новый ноутбук на Новый Год. Он тут же решил передарить его кому-то еще, ведь что может быть приятнее, чем дарить кому-то подарок. По этому случаю он организовал новогоднюю вечеринку у себя дома и пригласил туда n своих друзей.

Больше чем самому дарить подарки Петя любит только смотреть, как другие дарят подарки кому-либо. Так что ноутбук он припрятал до следующего Нового Года, а сам решил понаблюдать за процессом обмена подарками между своими друзьями, оставаясь в стороне. Он пронумеровал всех своих друзей целыми числами от 1 до n. Петя запомнил, что друг с номером i подарил подарок другу с номером pi. Он также запомнил, что каждому из его друзей достался ровно один подарок.

Теперь для каждого друга i Петя хочет узнать номер друга, который подарил ему подарок.

Входные данные
В первой строке записано одно целое число n (1 ≤ n ≤ 100) — количество приглашенных на вечеринку друзей Пети. Во второй строке записаны n целых чисел через пробел: i-ое число задает pi — номер друга, которому подарил подарок друг с номером i. Гарантируется, что каждый друг получил ровно один подарок. Возможно, что некоторые друзья не разделяют мнения Пети о приятности дарения подарков другим, а поэтому подарили подарок сами себе.

Выходные данные
Выведите n целых чисел, разделенных пробелом: i-ое число должно быть равно номеру друга, от которого получил подарок друг с номером i.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2023, 19:27
Ответы с готовыми решениями:

Задача: Подарки
В новогодний сладкий подарок нужно положить ровно N конфет. На складе хранятся конфеты, собранные по одной штуке и по три штуки в одной...

Задача с codeforces "Театральная площадь"
Театральная площадь в столице Берляндии представляет собой прямоугольник n × m метров. По случаю очередного юбилея города, было принято...

Задача со словарем: Подарки Иа
Добрый день. Есть задача (да, Яндекс Лицей =). Проходит часть тестов, но на части тестов валится. Не понимаю, почему. "Напишите...

22
Вирусоборец
 Аватар для thyrex
14440 / 7482 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
01.03.2023, 22:35
Лучший ответ Сообщение было отмечено HFD как решение

Решение

Python
1
2
3
4
5
6
7
n = int(input())
a1 = [int(x) for x in input().split()]
a2 = [0]*n
 
for i in range(1, n+1):
    a2[a1[i-1]-1] = i
print(*a2)
3
0 / 0 / 0
Регистрация: 09.08.2023
Сообщений: 1
09.08.2023, 16:13
Я долго думал над вашим решением, но так и не понял его, могли бы вы его подробнее объяснить?
0
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 16:55
thyrex, например
Python
1
a1 = [3,2,4,1]
на выходе
Code
1
4 2 1 3
то есть, 3 друг дарит подарок 4 другу, 2 - сам себе, 4 - 1 и 1 - 3 другу, правильно?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 17:35
Python
1
2
3
input('n = ')
arr = [int(x) for x in input('->').split()]
print(*[arr.index(e+1)+1 for e in range(len(arr))])
1
Вирусоборец
 Аватар для thyrex
14440 / 7482 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
09.08.2023, 17:56
s_t_r_a_j, наверное

Вот доступные тесты к этой задаче с сайта codeforces

входные данные
4
2 3 4 1
выходные данные
4 1 2 3

входные данные
3
1 3 2
выходные данные
1 3 2

входные данные
2
1 2
выходные данные
1 2
0
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 18:39
Цитата Сообщение от thyrex Посмотреть сообщение
доступные тесты к этой задаче
а если не знать тестов к задаче?
0
Вирусоборец
 Аватар для thyrex
14440 / 7482 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
09.08.2023, 18:58
На нормальных сайтах с заданиями всегда есть минимум один пример теста. На не нормальных - загрузили в тестирующую систему и дождались результат. Само это задание уровня А (самого низкого) и написать работающее решение можно исходя из условия.

А так ответ на Ваш вопрос по конкретным исходным данным - утвердительный.
0
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 20:18
thyrex, ок, я вот так зато логичней и ближе к жизненному решению)
Python
1
2
3
4
5
6
7
8
9
10
11
12
from random import randint
 
a1 = [int(x) for x in input()]
 
d = {}
i = 1
while i <= len(a1):
    ran = randint(1, len(a1))
    if ran not in d.values():
        d[a1.index(i) + 1] = ran
        i += 1
print(' '.join(map(str,d.values())))
Добавлено через 13 минут
вывод верхнего кода будет неверен в данной ситуации, так как dict перемешивает результат, вот так все видно кто кому дарит
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from random import randint
 
a1 = list(map(int, [x for x in input().split()]))
 
d = {}
i = 1
while i <= len(a1):
    ran = randint(1, len(a1))
    if ran not in d.values():
        d[a1.index(i) + 1] = ran
        i += 1
 
for key in d:
    # кто кому дарит
    print(f'{d[key]} => {key}')
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 20:59
Ну или так:
Python
1
2
3
4
from operator import itemgetter
input('n = ')
arr = sorted(enumerate([int(x) for x in input('->').split()], start=1), key=itemgetter(1))
print(*[e[0] for e in arr])
1
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 21:04
idealist, ну у вас код ничего не распределяет собственно, каждый дарит подарок сам себе, жадные дети у вас какие-то
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 21:06
Еще вариант:
Python
1
2
3
from operator import itemgetter
input('n = ')
print(*list(map(itemgetter(0), sorted(enumerate([int(x) for x in input('->').split()], start=1),key=itemgetter(1)))))
Добавлено через 55 секунд
Цитата Сообщение от s_t_r_a_j Посмотреть сообщение
idealist, ну у вас код ничего не распределяет собственно
Как это?
1
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 21:12
Цитата Сообщение от idealist Посмотреть сообщение
Как это?
Code
1
2
3
n = 4
->2 1 3 4
2 1 3 4
Code
1
2
3
n = 4
->2 1 3 4
2 1 3 4
Code
1
2
3
n = 4
->1 2 3 4
1 2 3 4
Code
1
2
3
n = 4
->1 2 3 4
1 2 3 4
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 21:16
s_t_r_a_j, ну, это вы примеры такие подбираете. Надо нормальные:
Python
1
2
3
n = 7
->1 3 7 4 2 5 6
1 5 2 4 6 7 3
0
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 21:22
idealist,
Code
1
2
3
n = 7
->1 2 3 4 5 6 7
1 2 3 4 5 6 7
в общем у вас получается, что если друзья приходят по порядку, начиная с первого, то дарите подарки пожалуйста сами себе

Добавлено через 1 минуту
Code
1
2
3
n = 7
->7 2 3 4 5 6 1
7 2 3 4 5 6 1
в общем веселая у них днюха Новый год, как ни крути
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 21:23
Цитата Сообщение от s_t_r_a_j Посмотреть сообщение
у вас получается
Так у нас вроде программы одинаково работают...
0
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 21:25
Цитата Сообщение от idealist Посмотреть сообщение
у нас вроде программы одинаково работают
да нет, у меня дети в основном все с подарками, изредка парочка сама себе отдаривается только)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 21:29
Цитата Сообщение от s_t_r_a_j Посмотреть сообщение
да нет, у меня дети в основном все с подарками, изредка парочка сама себе отдаривается только)
Прикалываетесь?
Цитата Сообщение от s_t_r_a_j Посмотреть сообщение
в общем у вас получается, что если друзья приходят по порядку, начиная с первого, то дарите подарки пожалуйста сами себе
Задача состоит в том, чтобы найти обратную подстановку. Если подстановка единичная, то и обратная к ней будет единичная.
1
 Аватар для s_t_r_a_j
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
09.08.2023, 21:34
Цитата Сообщение от idealist Посмотреть сообщение
Задача состоит в том, чтобы найти обратную перестановку. Если перестановка единичная, то и обратная к ней будет единичная
зато у меня все дети с подарками, а у вас все дети в печали)

Добавлено через 46 секунд
я же сразу написал
Цитата Сообщение от s_t_r_a_j Посмотреть сообщение
ок, я вот так зато логичней и ближе к жизненному решению)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
09.08.2023, 21:39
s_t_r_a_j, у меня здесь опечатка, я подстановку имел в виду.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2023, 21:39
Помогаю со студенческими работами здесь

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

Задача с codeforces "Беру-такси"
Рабочий Василий живёт в точке (a, b) координатной плоскости. Он очень торопится на работу, поэтому ему нужно как можно быстрее уехать из...

Задача "Система регистрации" из codeforces
При отправки задачи моё решение проваливается на седьмом проходе и жалуется, что превышено ограничение времени. Помогите пожалуйста...

Задача с codeforces "Подарки"
Здравствуйте, помогите решить задачу с кодфорса Маленький Петя очень любит подарки. Недавно мама подарила ему новый ноутбук на Новый...

Задача с Codeforces
Разбирал самый первый контест вот и столкнулся с такой проблемой не понимаю на чем основывается вывод получения сторон. Вот собственно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru