Блог пользователя Dalgerok

Автор Dalgerok, история, 8 лет назад, По-русски

Всем привет.

Возникла необходимость сгенерировать множество размера ~15000 и числами до 300000 в котором все суммы двух различных чисел различны.

Множество {1, 2, 3, 4} — плохое, потому что 2 + 3 = 5 и 1 + 4 = 5.

Множество {1, 2, 3} — хорошее.

Никто не знает как быстро генерировать хорошее множество и возможно ли это вообще?

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

»
8 лет назад, скрыть # |
 
Проголосовать: нравится +19 Проголосовать: не нравится

Различный сумм 600000, а количество пар сильно больше

»
8 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится

Ничего не получится из-за принципа Дирихле — всевозможных пар будет гораздо больше, чем 600000 — максимально возможная сумма.

»
8 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +33 Проголосовать: не нравится

Такие множества называются множествами Сидона.

Чтобы сгенерировать множество хорошего размера, можно воспользоваться следующим методом: рассмотрим нечетное простое число p. И тогда можно сделать p чисел вида (i2 mod p) * p * 2 + i + 1 для всех i от 0 до p - 1. Это первый метод, который я вспомнил, вроде есть лучше.

»
8 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

Если интересно, то вот задача на генерацию массива из чисел, у которых количество различных попарных разностей более 90% от всех возможных разностей