М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Jdjdkdjd
Jdjdkdjd
26.11.2022 21:49 •  Информатика

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

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

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

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

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

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

Одна торговая сеть проводит опрос потребителей о предпочтительной марке одного из товаров. Марки товара пронумерованы от 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 чисел: количество голосов, отданных марки товара.

👇
Открыть все ответы
Ответ:
irina699
irina699
26.11.2022
Чтобы прекратить ввод чисел в массив нужно ввести число "-1010".
class ArrayNegative{
 public static void main(String args[]){
  java.util.Scanner in = new java.util.Scanner(System.in); long eArray[] = new long[1];
  while((eArray[eArray.length-1] = in.nextLong())!=-1010){
   long nArray[] = new long[eArray.length+1];
   for(int nCell = 0; nCell<eArray.length; nCell++)nArray[nCell]=eArray[nCell];
   eArray = nArray;
  } eArrayCell:
  for(int cCell = 0; cCell<eArray.length-1; cCell++){
   if(eArray[cCell]>0)continue;
   else for(int eCell = cCell+1; eCell<eArray.length-1; eCell++)
   if(eArray[eCell]>0){
    eArray[eArray.length-1]=eArray[cCell];
    eArray[cCell]=eArray[eCell];
    eArray[eCell]=eArray[eArray.length-1];
    continue eArrayCell;
   }
   break;
  }
  for(int cCell = 0; cCell<eArray.length-1; cCell++)System.out.print(eArray[cCell]+" ");
 }
}
4,5(96 оценок)
Ответ:
саша4275
саша4275
26.11.2022
Чтобы прервать ввод в массив нужно ввести число "-1010".
class ArrayNegative{
 public static void main(String args[]){
  java.util.Scanner in = new java.util.Scanner(System.in); long eArray[] = new long[1];
  while((eArray[eArray.length-1] = in.nextLong())!=-1010){
   long nArray[] = new long[eArray.length+1];
   for(int nCell = 0; nCell<eArray.length; nCell++)nArray[nCell]=eArray[nCell];
   eArray = nArray;
  } eArrayCell:
  for(int cCell = 0; cCell<eArray.length-1; cCell++){
   if(eArray[cCell]>0)continue;
   else for(int eCell = cCell+1; eCell<eArray.length-1; eCell++)
   if(eArray[eCell]>0){
    eArray[eArray.length-1]=eArray[cCell];
    eArray[cCell]=eArray[eCell];
    eArray[eCell]=eArray[eArray.length-1];
    continue eArrayCell;
   }
   break;
  }
  for(int cCell = 0; cCell<eArray.length-1; cCell++)System.out.print(eArray[cCell]+" ");
 }
}
4,6(11 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ