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

Задача 2. Праздничная делимость

24.11.2022, 11:36. Показов 4511. Ответов 9

Студворк — интернет-сервис помощи студентам
Задача 2. Праздничная делимость
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 мегабайт
Мише на день рождения подарили массив a1, a2, . . . , an, состоящий из n целых положительных
чисел.
Мише надоело, что ему каждый год дарят массивы, поэтому он решил его изменить. Мальчик
решил произвести q изменений следующего вида: «Заменить число, находящееся на позиции xi на
число yi».
После каждой операции изменения Миша хочет знать, сколько существует таких пар чисел (l, r),
что l < r и al + ar делится на k без остатка. Так как Миша не силен в математике и устном счете,
вам предстоит помочь ему и решить данную задачу.
Формат входных данных
Первая строка содержит три целых числа n, q и k (1 <= n, q <= 100 000, 1 <= k <= 10^9 ) — количество элементов в массиве, количество изменений, которые хочет сделать Миша, а также число, на которое должна делиться сумма чисел в искомых парах, соответственно. Вторая строка содержит n целых чисел a1, a2, . . . , an (1 <= ai <= 10^9 ) — элементы массива. Каждая из следующих q строк содержит два целых числа xi и yi (1 <= xi <= n, 1 <= yi <= 10^9 ) — описание очередного изменения, произведенного Мишей. После этого изменения число, находящееся на позиции xi в массиве заменяется на число yi .
Формат выходных данных
Выведите q строк. В i-й строке одно целое число — количество пар чисел (l, r), таких что l < r
и al + ar делится на k без остатка после применения первых i операций.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2022, 11:36
Ответы с готовыми решениями:

Делимость на 3. Задача
Напиши программу, которая принимает в цикле 7 целых чисел. Известно, что по модулю они не превышают 1000. Если среди этих чисел есть те,...

Задача 8/11. Делимость чисел
Принц Джеймс очень любит математику. Для своих исследований ему необходимо научиться быстро узнавать, делится ли одно из двух чисел на...

Задача на делимость
Всем привет! Было дано задание: Напишите программу, которая вводит натуральные числа а и b и выводит на экран все натуральные числа на...

9
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.11.2022, 12:03
примеры ввода/вывода?
0
0 / 0 / 0
Регистрация: 24.11.2022
Сообщений: 8
24.11.2022, 12:09  [ТС]
Пример
стандартный ввод / стандартный вывод
5 3 3 / 3
1 2 3 4 5 / 4
1 3 / 4
3 1
2 5
0
2 / 2 / 0
Регистрация: 25.08.2018
Сообщений: 78
24.11.2022, 12:17
Ввод
5 3 3
1 2 3 4 5
1 3
3 1
2 5
Вывод
3
4
4




Вот так

Добавлено через 1 минуту
Замечание
В изначальном массиве из примера подходящими парами (l, r) являются (1, 2): 1 + 2 = 3, (1, 5):
1 + 5 = 6, (2, 4): 2 + 4 = 6 и (4, 5): 4 + 5 = 9

После первого изменения массив выглядит следующим образом: 3, 2, 3, 4, 5. Подходящими парами
в нём являются (1, 3): 3 + 3 = 6, (2, 4): 2 + 4 = 6 и (4, 5): 4 + 5 = 9
После второго изменения массив выглядит следующим образом: 3, 2, 1, 4, 5. Подходящими парами
в нём являются (2, 3): 2 + 4 = 6, (2, 4): 2 + 4 = 6, (3, 5): 4 + 5 = 9 и (4, 5): 4 + 5 = 9.
После третьего изменения массив выглядит следующим образом: 3, 5, 1, 4, 5. Набор подходящих
пар не изменится.
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.11.2022, 12:19
тут один подводный камень когда k четное и в массиве есть числа k//2
0
2 / 2 / 0
Регистрация: 25.08.2018
Сообщений: 78
24.11.2022, 12:54
нам бы по быстрее, а то часок остался ...
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.11.2022, 13:06
Python
1
2
3
4
5
6
7
8
9
10
n, q, k = map(int, input().split())
*a, = map(int, input().split())
for _ in range(q):
    x, y = map(int, input().split())
    a[x - 1] = y
    count = 0
    for i in range(n):
        for j in range(i + 1, n):
            count += (a[i] + a[j]) % k == 0
    print(count)
пожалуйста. Быстро, но медленно...
1
2 / 2 / 0
Регистрация: 25.08.2018
Сообщений: 78
24.11.2022, 13:12
спасибо, а теперь можно немного это оптимизировать?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
24.11.2022, 13:19
Maxim1704g, какие идеи по оптимизации?
0
2 / 2 / 0
Регистрация: 25.08.2018
Сообщений: 78
24.11.2022, 13:47
eaa, не знаю, например за один проход каким-то образом найти все пары чисел

Добавлено через 8 минут
eaa, ну очень нужно, помогите, пожалуйста ...

Добавлено через 1 минуту
eaa, полчаса осталось ... время есть немного ...

Добавлено через 2 минуты
eaa, 20 минут ровно осталось ...

Добавлено через 1 минуту
eaa, на Вас вся надежда))

Добавлено через 10 минут
eaa, 10 минут

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

Праздничная делимость
Мише на день рождения подарили массив a1, a2, . . . , an, состоящий из n целых положительных чисел. Мише надоело, что ему каждый год...

Задача на делимость
Доказать, что m5+4m кратно 5, при всех натуральных m

Задача на делимость
{a}^{3}+3{a}^{2}-a-3:48 при нечетном а

Комбинаторная задача на делимость
Сколь много чисел в пределах первых двух сотен, которые делятся в точности на одно из чисел: 4, 6, 7? Помогите, пожалуйста. Пытался...

Задача на делимость полиномов
при каких m (x+1)^m-x^m-1 делится на (x^2+x+1)^2 ?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru