Информация об изменениях

Сообщение Re[4]: Ещё задачи на заваливание от 04.11.2018 4:13

Изменено 04.11.2018 4:17 Bjorn Skalpe

Re[4]: Ещё задачи на заваливание
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Bjorn Skalpe, Вы писали:


S>>>Сразу видно что задача оторвана от практики и решается неким хитрым способом, который в реальных провектах никогда не понадобится.


BS>>О да, хитрее не придумаешь... Особенно решение O(n)


S>В условии не сказано что числа упорядочены или нет пропусков. Вот если придумаете способ найти дубликат без составления хеш таблицы или полной при условии пропусков (т.е. что, к примеру, числа 2 может вообще не быть) — тогда интересно. Не уверен что это возможно.


Причем тут упорядоченность?

Да ты что, алгебру не учили в школе? Даже не попробовал запускать? А ты попробуй поменять местами...

Например так:


#include <stdio.h>

int main()
{
  int a[] = {8, 6, 3, 1, 4, 5, 7, 2, 4, 9};
  long long s = 0;
  for (size_t i=0;i<10;i++)
       s+=(a[i]-i);
  printf ("%d\n", s);
  return 0;
}


По поводу ваших данных, где тут сказано, в условиях задачи, что должны быть пропуски, где цифра 2, 5, куда они пропали?

S>
S>int[] a = new int[] {1, 3, 4, 4, 6, 7, 8, 9, 10, 11};
S>


Как этот массив, который вы даете отвечает условию задачи?
Re[4]: Ещё задачи на заваливание
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Bjorn Skalpe, Вы писали:


S>>>Сразу видно что задача оторвана от практики и решается неким хитрым способом, который в реальных провектах никогда не понадобится.


BS>>О да, хитрее не придумаешь... Особенно решение O(n)


S>В условии не сказано что числа упорядочены или нет пропусков. Вот если придумаете способ найти дубликат без составления хеш таблицы или полной при условии пропусков (т.е. что, к примеру, числа 2 может вообще не быть) — тогда интересно. Не уверен что это возможно.


Причем тут упорядоченность? А пропусков нет, потому что дано от 1 до 2^32-1 чисел в файле и только одно повторяется, спрашивается какое.

Да ты что, алгебру не учили в школе? Даже не попробовал запускать? А ты попробуй поменять местами...

Например так:


#include <stdio.h>

int main()
{
  int a[] = {8, 6, 3, 1, 4, 5, 7, 2, 4, 9};
  long long s = 0;
  for (size_t i=0;i<10;i++)
       s+=(a[i]-i);
  printf ("%d\n", s);
  return 0;
}


По поводу ваших данных, где тут сказано, в условиях задачи, что должны быть пропуски, где цифра 2, 5, куда они пропали?

S>
S>int[] a = new int[] {1, 3, 4, 4, 6, 7, 8, 9, 10, 11};
S>


Как этот массив, который вы даете отвечает условию задачи?