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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Темы называем по-нормальному
Старый 06.11.2007, 16:15   #1
lexus
 
Регистрация: 05.11.2007
Сообщений: 3
По умолчанию Поиск непарного числа в файле

в файле unmarried.dat через пропуск записаны номера кроликов, которые являются натуральными числами и не превышают 2•10^9.
в исходящем файле unmarried.sol записать одно число ( номер кролика) у которого нет пары
Пример
unmarried.dat
1 6 2 3 4 6 3 1 2 3 4 3 6
unmarried.sol
6

Задача нужна для паскаля!!!

Темы называем по-нормальному!!! SupVis

Последний раз редактировалось SuperVisor; 07.11.2007 в 08:24.
lexus вне форума Ответить с цитированием
Старый 06.11.2007, 16:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пробуй так:
Код:
uses crt;
var e,s:string; i,k:integer;t:text;
begin    clrscr;
assign(t,'ii.txt');reset(t);
readln(t,s);reset(t);
 e:=s;
 k:=0;
while length(s)>0 do begin
  k:=0;i:=1;e:=s[1];
 while i<>0 do begin
  i:=pos(e,s);
  if i<>0 then begin
   delete(s,i,2);inc(k);
  end;
 end;
 if (k mod 2)<>0 then
  writeln(e);
end;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2007, 17:16   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Решение правильное
Но задачка знакомая... Это типичная олимпиадная задача, с ограничением по времени, а количество чисел во входном файле на (кажется) 3 тесте более 4000.
В итоге программа не пройдёт по времени.
На олимпиаде выход нашёл - через множества (set of)
zetrix вне форума Ответить с цитированием
Старый 06.11.2007, 17:19   #4
lexus
 
Регистрация: 05.11.2007
Сообщений: 3
По умолчанию

zetrix
скажи как правильно пожайлуста !
Для паскаля!
lexus вне форума Ответить с цитированием
Старый 20.12.2009, 14:13   #5
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Решается за линейное время, xor-ом, сначала ответ =0, потом в цикле
Код:
{readln(x);}read(input,x);ans:=ans xor x;
в итоге получим ответ, так как любое число, которое имеет пару, будет проксорено побитно под ноль с этой парой. (1 xor 1=0 xor 0=0)
Если на сервере есть место для тестов, то могут дать несколько миллионов чисел во входном файле и 1 секунду времени.
Stilet , решение неверное. Ведь, согласно огриничениям, могут быть числа длиною более 1 цифры. Даже если и за таким вот принципом, то надо сначала допмассивы заполнить под длину, потом еще полчаса извращатся...
LeBron вне форума Ответить с цитированием
Старый 20.12.2009, 16:47   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

LeBron, надеюсь, Вас не смущает, что тема два года назад была?

Алгоритм с XOR просто отличный. простой и супербыстрый. Есть один нюансик. А где в условии сказано, что такой кролик ОДИН?! Если в списке есть несколько кроликов без пары, то ответ будет XOR номеров всех этих кроликов - то бишь - какое-то бессмысленное число...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2009, 19:00   #7
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
LeBron, надеюсь, Вас не смущает, что тема два года назад была?

Алгоритм с XOR просто отличный. простой и супербыстрый. Есть один нюансик. А где в условии сказано, что такой кролик ОДИН?! Если в списке есть несколько кроликов без пары, то ответ будет XOR номеров всех этих кроликов - то бишь - какое-то бессмысленное число...
Не смущает - она ведь не в архиве. Если более-менее умному человеку придет в голову, перед тем, как постить свою тему, поискать по форуму, то при похожей задаче он эту тему найдет. А в этой теме задача не решена. Так что это не помощь ТС, но, в перспективе, помощь другим и увеличение полезности форума.
Написано вот сдесь:
Цитата:
Сообщение от lexus Посмотреть сообщение
в исходящем файле unmarried.sol записать одно число
,
да и сразу видно, что такое число одно - по формулировке задачи ясно всем, кто хоть немного с задачами программирования знаком, для нескольких чисел она неразрешима подобным образом(лучший более-менее удобный вариант дает n*log(n), можно быстрее с большой константой) и не несет в себе ценности задачи (для нескольких чисел придется срезать ограничения и тогда решение больно уж примитивное).
LeBron вне форума Ответить с цитированием
Старый 20.12.2009, 20:02   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от LeBron
Цитата:
Сообщение от lexus
в исходящем файле unmarried.sol записать одно число
да и сразу видно, что такое число одно - по формулировке задачи ясно всем, кто хоть немного с задачами программирования знаком
ну, честно говоря, если подходить строго - то это не довод. например, если я дам Вам последовательность чисел и попрощу назвать ОДНО чётное число, это будет означать, что в последовательности нет других чётных чисел?... спорно. но допустимо. Тем более, что приложенный пример, иллюстрирующий задачу, содержит именно только одно число.

и ещё. чисто удовлетворения любопытства ради...
Цитата:
и не несет в себе ценности задачи (для нескольких чисел придется срезать ограничения и тогда решение больно уж примитивное).
а примитивное решение это какое (не обязательно его приводить, достаточно идею) ?
я бы лично, если бы такая задача встретилась мне в жизни, решал бы её через динамические структуры (хоть массивы, хоть связные списки) или коллекции. Там принцип такой - если число уже есть в НАБОРЕ (потребуется поиск), то удаляем имеющееся число из набора, если его там нет, добавляем. плюс такого решения - в результате имеем ВСЕ непарные числа... минус - сложность реализации и, разумеется, высокие требования к памяти и скорости работы...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2009, 20:40   #9
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, честно говоря, если подходить строго - то это не довод. например, если я дам Вам последовательность чисел и попрощу назвать ОДНО чётное число, это будет означать, что в последовательности нет других чётных чисел?... спорно. но допустимо. Тем более, что приложенный пример, иллюстрирующий задачу, содержит именно только одно число.
Не довод - абсолютно согласен. Но служит признаком определения наиболее вероятного типа задачи. Простой пример - в половине систем и олимпиад низкого уровня не реализирован чекер, следовательно, там может быть только 1 вариант ответа на задачу. Если их несколько, то дописывают "выведите минимальное", "выведите первое в порядке их размещения во входном файле" или что-то в этом роде.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а примитивное решение это какое (не обязательно его приводить, достаточно идею) ?
я бы лично, если бы такая задача встретилась мне в жизни, решал бы её через динамические структуры (хоть массивы, хоть связные списки) или коллекции. Там принцип такой - если число уже есть в НАБОРЕ (потребуется поиск), то удаляем имеющееся число из набора, если его там нет, добавляем. плюс такого решения - в результате имеем ВСЕ непарные числа... минус - сложность реализации и, разумеется, высокие требования к памяти и скорости работы...
Если память позволяет - заводим массив, пихаем в него все елементы входного потока, а дальше сортировка+линейный обход. При ограничениях для поиска всех чисел без пары - проходит. Идея - все числа, которые после сортировки будут нечетное количество раз, представлены на входе "неколько пар+число без пары", а числа, которые парное число раз - "несколько пар".
Пример: после сортировки у нас 0 0 0 0 1 1 1 1 1 1 1 2 3 4 4 4 4 5 5 6 6 7 7 7 7.
Нечетное число раз встречаются 1, 2, 3 - эти числа без пары.
LeBron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в файле Zandrey Microsoft Office Excel 8 05.09.2008 12:23
поиск в файле Elm0 Паскаль, Turbo Pascal, PascalABC.NET 14 07.06.2008 22:41
Расчет числа строк в типизированном файле 1234 Паскаль, Turbo Pascal, PascalABC.NET 6 20.05.2008 11:14
являются ли числа в файле упорядоченными Pohmel Помощь студентам 6 21.04.2008 16:12
Поиск в файле asale Microsoft Office Excel 1 15.05.2007 23:33