![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
задача на вычисление количества чисел [D7, XP]
bogdan © (2005-09-27 21:06:00)Здравствуйте !
Вот опять приходится решать интересную задачку!
Дано 100 чисел. от 1 до 50. Найти сколько среди них чисел Фибоначчи и сколько чисел у которых первая значущая цифра в десятиричном виде 1 или 2.
Мои размышления малы: можно например упорядочить список по возрастанию, а потом - а потом не знаю что делать....
Надеюсь что вы подскажете. С уважением...
bogdan (2005-10-11 15:35:00) [1]
> jack128 © (11.10.05 00:55) [8]
пасибо за совет
bogdan (2005-10-11 15:34:00) [2]
> S@ska (27.09.05 22:55) [1]
это вааще неправильно.
должно быть так
s:=a[i]-(a[i] div 10)*10 ;
if s in [1,2] then
jack128 (2005-10-11 00:55:00) [3]bogdan (10.10.05 23:08) [7]
Я не понял вааше
for i := low(Arr) to high(Arr) do
if IntToStr(arr[i])[1] in ['1', '2'] then // Первая цифра - единица или двойка
S@ska (27.09.05 22:55) [1]
if (M[i] div 10) in [1,2] then .... // Условие 2
а если M[i] = 2 то что будет ?
bogdan (2005-10-10 23:08:00) [4]
Anatoly Podgoretsky ©
Я не понял вааше
Anatoly Podgoretsky (2005-10-10 20:04:00) [5]bogdan (27.09.05 21:06)
Вторая задача проще решается через строковое представление чисел
S[1] = N
bogdan (2005-10-10 19:54:00) [6]Привет !
Можете подсказать можно ли cделать следующее.
Можно ли представить масив как множество.? Поясняю:
Например есть у нас переменнаяiцелочисленого типа. с помощью оператора
if i in [1,4,5] then....проверяем местится ли она(значение) в множестве1,4,5.А вот если, например, у нас есть массив, то, чтоб не писать функцию проверки принадлежности значения переменной масиву, можно ли как-то преобразовать масив в множество и проверить так как написано выше?
bogdan (2005-09-28 08:23:00) [7]спасибо попробую
Сайбель Алексей (2005-09-28 06:53:00) [8]По моему особо мудрить здесь не надо, дано всего лишь 100 чисел. Никаких time limit'ов тут явно не будет чтобы переводить алгоритм, допусти из O(N*N) в lg(N). Так что в лоб сойдет.
Вот используй рекурсивную функцию для чисел фибоначчи:
x[1]=x[2]=1
x[n]=x[n-1]+x[n-2] при n > 2
Думкин (2005-09-28 06:12:00) [9]> Мои размышления малы:
В описанном - они вообще отсутствуют.
Интерес, если его тут проявить - в создании оптимального алгоритма. А в тупую - пишется - 10 минут с отладкой. Максимум.
S@ska (2005-09-27 22:55:00) [10]
> Вот опять приходится решать интересную задачку!
)))))))
я думаю что проще сделать так
M : array [0..49] of Integer; // Массив с введенными числами
for i := Low (M) to High (M) do
begin
if (M[i] div 10) in [1,2] then .... // Условие 2
end;
А для чисел Фибоначчи содать просто массив этих чисел и на каждой итерации вызывать функцию, которая проверяла бы входит ли M[i] в даный массив или нет.
Сортировать по моему ничего не надо _))