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

Опрос

07.11.2021, 16:24. Показов 2760. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Одна торговая сеть проводит опрос потребителей о предпочтительной марке одного из товаров. Марки товара пронумерованы от 1 до K. Каждый участник опроса выбирает одну из K марок. Результаты опроса записываются в блокчейн.

Каждый блок блокчейна имеет следующую структуру. Первое число — это количество записанных голосов в данном блок блокчейна. Назовем его count. Второе число (назовем его sum) — это контрольная сумма всех голосов в предыдущем блоке блокчейна по модулю 4294967291 (то есть остаток от деления суммы голосов на это число). Далее в блоке следует count чисел от 1 до K — зарегистрированные голоса.

В первом блоке контрольная сумма предыдущего блока равна 0.

Последний блок блокчейна особенный, в нем количество записей равно 0, и хранится только контрольная сумма голосов предыдущего блока.

К сожалению, в программу сохранения голосов в блокчейне вкралась ошибка, которая может приводить к искажению информации в блоках блокчейна. А именно, в испорченном блоке все записи об отданных голосах уменьшаются на 1 кроме тех, которые и так равны 1. То есть, если запись об отданном голосе была равна 5, в испорченном блоке она станет равна 4, но запись о голосовании 1 останется 1. Значения count и sum в блоке не искажаются, то есть остаются правильными. Один блок может быть испорчен не более одного раза.

Например, пусть блокчейн состоит из двух блоков следующей структуры:

10 0 1 2 3 4 5 6 1 2 1 3 -- первый блок
0 28 -- второй блок
Контрольная сумма всех голосов (1 2 3 4 5 6 1 2 1 3) певого блока равна 28, что сопадает с суммой голосов, записанной во втором блоке. Это означает, что блок не испорчен, что позволяет просто посчитать популярность каждой марки.

Пусть дан блокчейн следующей структуры:

10 0 1 1 2 3 4 5 1 1 1 2 -- первый блок
0 28 -- второй блок
Сумма всех голосов первого блока равна 21, что не совпадает с суммой голосов, записанной во втором блоке. Значит блок испорчен. Можно однозначно восстановить, сколько голосов было подано за каждую марку.

На стандартном потоке ввода сначала задается число K, затем подаются данные в формате, описанном выше. Количество товаров K не меньше 1 и не больше 255. Общее количество участников опроса не превосходит 1000. Числа во вводе могут разделяться произвоным количеством пробелов, табуляций и переводов строк.

На стандартный поток вывода напечатайте K чисел: количество голосов, отданных марки товара.

Примеры
Входные данные
6 10 0
1 2 3 4 5 6 1 2 1 3
0 28
Результат работы
3 2 2 1 1 1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2021, 16:24
Ответы с готовыми решениями:

Устный опрос
Ограничение по времени: 1 секунда. В классе N учеников. Учитель опрашивает сначала сначала всех учащихся c нечётными номерами...

Опрос и стастистика
Не получается запустить должным образом код import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication,...

Опрос функции в новом потоке
подскажите пожалуйста, как можно реализовать циклический опрос функции в отдельном потоке? Если напрмер я займу работу программы длительной...

8
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.11.2021, 16:32
Цитата Сообщение от algaaa Посмотреть сообщение
Числа во вводе могут разделяться произвоным количеством пробелов, табуляций и переводов строк.
интересное условие для python)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
07.11.2021, 16:59
eaa, По моему говорили, что в регулярках можно использовать разбиение split(...) указав сразу несколько различных символов, по которым идет разбиение. А затем в полученных строках отбросить начальные и конечные пробельные символы.
0
0 / 0 / 0
Регистрация: 10.11.2021
Сообщений: 5
10.11.2021, 13:55
вот часть этой задачи, она ввод нормализует. Дальше сам думай.
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
znachenia = list()
danniestr = []
dannie = []
blockchain = []
vvod = str(input())
danniestr = vvod.split()
while len(danniestr) < 3:
    vvod = str(input())
    danniestr += vvod.split()
for item in danniestr:
    dannie.append(int(item))
for i in dannie:
    if dannie.index(i) == 0:
        k = int(i)
    elif dannie.index(i) == 1:
        count = int(i)
    elif dannie.index(i) == 2:
        sum = int(i)
        break
danniestr.clear()
kolvo = len(danniestr)
nexvataet = count - kolvo
 
while nexvataet != 0:
    vvod = str(input())
    danniestr += vvod.split()
    kolvo = len(danniestr)
    nexvataet = count - kolvo
for item in danniestr:
    blockchain.append(int(item))
for i in range(0, count):
    znachenia.append(blockchain[i])
print(znachenia)
0
10.11.2021, 17:09

Не по теме:

Цитата Сообщение от VagaColeso Посмотреть сообщение
вот часть этой задачи, она ввод нормализует
Страх Господень!

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.11.2021, 18:01
algaaa, Что, в этой задаче действительно используется технология блокчейна, которая используется в биткоинах?
Или это не имеет никакого отношения к технологии с блокчейнами, а просто использовали популярное слово?
0
0 / 0 / 0
Регистрация: 10.11.2021
Сообщений: 5
11.11.2021, 12:49
Viktorrus, блокчейн - система, в которой текущий блок данных зависит от предыдущего, по этому да, в каком то смысле это он
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.11.2021, 12:43
Цитата Сообщение от VagaColeso Посмотреть сообщение
блокчейн - система, в которой текущий блок данных зависит от предыдущего
Полно систем, где текущие блоки зависят от предыдущих, но которые не являются блокчейнами.
"Блокче́йн (англ. blockchain[1], изначально block chain[2] — цепь из блоков) — выстроенная по определённым правилам непрерывная последовательная цепочка блоков (связный список), содержащих информацию. Связь между блоками обеспечивается не только нумерацией, но и тем, что каждый блок содержит свою собственную хеш-сумму и хеш-сумму предыдущего блока. Изменение любой информации в блоке изменит его хеш-сумму. Чтобы соответствовать правилам построения цепочки, изменения хеш-суммы нужно будет записать в следующий блок, что вызовет изменения уже его собственной хеш-суммы. При этом предыдущие блоки не затрагиваются. Если изменяемый блок последний в цепочке, то внесение изменений может не потребовать существенных усилий. Но если после изменяемого блока уже сформировано продолжение, то изменение может оказаться крайне трудоёмким процессом. Дело в том, что обычно копии цепочек блоков хранятся на множестве разных компьютеров независимо друг от друга"
https://ru.wikipedia.org/wiki/... 0%B9%D0%BD
Где в данной задаче хэш-суммы?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
13.11.2021, 00:23
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from collections import Counter
 
 
def counter(blockchain, n, check_sum):
    *a, = map(int, blockchain.split())
    a.sort()
    s = sum(a)
    if s != check_sum:
        for i in range(check_sum-s):
            a[~i] += 1
    return Counter(a).values()
 
 
print(*counter('1 2 3 4 5 6 1 2 1 3', 10, 28))
print(*counter('1 1 2 3 4 5 1 1 1 2', 10, 28))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2021, 00:23
Помогаю со студенческими работами здесь

Опрос железа
Всем привет. Нужна помощь в подборе инфы и (по возможности) кода, следующего назначения: с помощью питона сделать выборку: ...

Опрос-приложение для Windows
Нужно приложение-опрос с простым интерфейсом для Windows, что-бы человек прошел опрос и получил вывод ответа в том же приложении. Опрос на...

Простой опрос с Python GUI
Добрый день, форумчане. Начала изучать PyQt5 и решила создать простой опрос с интерфейсом. Если ответ верный - +1 балл пользователю и...

Простой опрос с Python GUI
Здравствуйте, господа программисты) Объясните пожалуйста мне, недалекой, где я в логике допустила ошибку. Вот модуль, запускающий...

Статистика по программистам python: предлагаю опрос
вопросы


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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