Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 18:23   #1
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию Шифр

Вобщем надо построить массив из n количества чисел(n вводит пользователь)... но так, чтобы каждое число повторялось 3 раза или кратное 3м число раз... НО одно число встречается некратное трём число раз... Надо найти это число
Progs1024 вне форума Ответить с цитированием
Старый 12.10.2009, 18:42   #2
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

какие ограничения на n? При детских очень простая сортировочная или переборная задача, при больших - задача олимпиадного уровня, решение которой в случае, если неизвесно какое количество раз встречается искомое число, мне неизвесно.
LeBron вне форума Ответить с цитированием
Старый 12.10.2009, 18:43   #3
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

И еще кое-что, я не понял, что от нас требуется? написать и шифровщик, и дешифровщик? а то сначала зашифровать, а во второй части задания - розшифровать
LeBron вне форума Ответить с цитированием
Старый 12.10.2009, 19:06   #4
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

1<=N<=300001... ну в задаче написано так. цитирую:"среди большого количества чисел спрятано секретное число, причем все числа встречаются трижды(или кратное трём число раз), кроме секретного числа, которое встречается некратное трём число раз" ...надо найти сектретное число
Progs1024 вне форума Ответить с цитированием
Старый 12.10.2009, 19:13   #5
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

300000? Тогда это довольно простая задача. Сложно, если, к примеру, большое ограничение по времени и маленькое по памяти, и чисел много (пример - решал для 2кратного повторения, 60 секунд, 1 число без пары вообще 2мб памяти и 100млн чисел, и для 3кратного, 60секунд, 1 число без пары вообще, 2 мб памяти, 50млн чисел).
Сдесь просто пишем быструю сортировку, а потом линейным алгоритмом обходим массив, который получится, и на ходу занимаемся поиском нужного числа. Даже при кривом кусорте должно работать примерно 0.8-0.9 секунды.
LeBron вне форума Ответить с цитированием
Старый 12.10.2009, 19:16   #6
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

я конечно понимаю что форум для профессионалов, но я новичок... поэтому можно хотябы некоторые элементы кода для решения этой задачи?
Progs1024 вне форума Ответить с цитированием
Старый 12.10.2009, 19:30   #7
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Я пока далеко не профессионал Как пишется быстрая сортирока - гугл в помощь.
По поводу элементов - проверять после сориторовки надо так
Код:
i:=1;ans:=0;nm:=1;
while (i<n)and (ans=0) do begin 
inc(i);if ar[i]<>ar[i-1] then begin 
if nm<>3 then ans:=ar[i-1];
nm:=0;end
else inc(nm);end;
теперь объясняю: у нас будет упорядоченный массив. Следовательно, все числа, которые по 3, будут и в массиве по 3 подряд. А число, которое не 3 раза - и в массиве будет не 3 раза. анс - ответ, это будет тот элемент массива, который заканчивает группу из одинаквых элементов, длинной не 3 ( к примеру, если после сортировки будет
1 1 1 2 2 2 5 5 5 12 12 12 18 18 122 122 122 - то когда дойдем до 122 - будет обрыв группы длиной, отличной от 3 (группа 18 18), поэтому ответом станет 18). нм - текущая длина группы одинаковых. Дальше думаю сами разберетесь. НУ еще объясню, что сначала первый сразу заливаю в группу длиной 1 (ведь перед ним нету других элементов), и просматриваю со второго.
LeBron вне форума Ответить с цитированием
Старый 12.10.2009, 19:32   #8
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Еще одно хочу добавить - если дойдем до последнего элемента, а ответа не будет, то ответ - текущее значение nm (просто мы не увидели обрыва, так как группа последняя, ответом является самое большое число массива, обрыв - конец этого массива).
LeBron вне форума Ответить с цитированием
Старый 12.10.2009, 19:37   #9
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

Числа идут не по порядку
Progs1024 вне форума Ответить с цитированием
Старый 12.10.2009, 19:51   #10
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Для невнимательных повторяю еще раз - сначала быстрая сортировка, потом линейный обход.
LeBron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифр Бекона А. Долматов Общие вопросы Delphi 3 22.04.2012 04:45
Шифр Хилла Fallen Soul Помощь студентам 4 05.10.2009 02:09
че за шифр? Анастасия123456789 Помощь студентам 4 11.05.2009 19:19
Разгадайте шифр П@fнутич:-) Свободное общение 56 12.04.2009 22:28
Шифр Razora Свободное общение 10 26.06.2007 15:52