Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизПятничные задачки. Сogito ergo sum. Найти похожие ветки
← →
MBo © (2005-10-07 08:14) [0]1. На маленьком острове стоит прожектор, луч которого освещает
отрезок поверхности моря длиной 1 км. Прожектор вращается с периодом 1 мин.
При какой минимальной скорости катер может незаметно подплыть к острову?
2. Начальная скорость снаряда зенитной пушки V. Какую форму имеет зона безопасности для самолетов?
3. Вася Пупкин получил два предложения о работе.
Фирма "Рога и Копыта" предлагает ему 18000$ в год с увеличением каждый год
на 2000$, а ООО "ЗюЗюЗю" предлагает тот же стартап с увеличением каждые полгода
на 500$. Куда ему лучше податься?
4. У ювелира было много серебряных колечек. Толщина колечка в сечении 0.5 мм.
Он сделал две цепочки, одна длиной 326 мм, вторая 426 мм.
Сколько всего колечек было, если на длинную он израсходовал
на 40 колечек больше, чем на короткую?
5. Металлический стержень согнут посередине под прямым угом и подвешен
на шарнире за один из концов. Найти угол между верхним отрезком и вертикалью.
6. Два автомобиля отправились одновременно из A в B по одной дороге с разными,
но постоянными скоростями, выражающимися натур. числами. Разность скоростей -
простое число. Расстояние от А до В 100 км. Через 2 часа расстояние от А до медленного
автомобиля было впятеро больше расстояния от В до второго автомобиля.
Найти скорости.
7. Три точки A,В,С находятся на прямом берегу последовательно на расстоянии 50 и 50 м друг от друга.
Одновременно из B к С поплыл Петя, а из A к B - Вася с Тузиком. Тузик догнал Петю,
повернул назад и вышел на берег в точке B одновременно с Васей, а Петя в тот же момент
вышел в точке С. Скорости постоянны. Сколько проплыл Тузик?
8. Дан указатель на начало односвязного списка. Написать функцию, которая обращает его
за линейное время с использованием О(1) памяти
9. Написать функцию, которая производит циклический сдвиг строки длиной N
на расстояние M влево за время O(N) с использованием O(1) памяти.
Пример: при N=9,M=3 строка abcdefghi превращается в defghiabc
10. Любопытная задача, уже когда-то задавалась McSimm-ом:
Введение: известна задача о ханойских башнях:
Имеется 3 стержня, на левый надето N дисков уменьшающегося размера.
Требуется переложить их на правый с соблюдением правила - на каждом
шаге перкладывается один диск, на больший диск можно класть только меньший.
Например, для 3-х дисков кратчайшая последовательность такова
(номера стержней, откуда и куда идет перекладывание через черточку):
1-3 1-2 3-2 1-3 2-1 2-3 1-3
Кто еще не сталкивался с исходной задачей, может попробовать силы в ее
самостоятельном решении.
Собственно основная задача:
Составить алгоритм решения задачи для ПРОИЗВОЛЬНОГО допустимого начального
расположения дисков.
← →
КаПиБаРа © (2005-10-07 08:25) [1]1. 1км/мин
← →
MBo © (2005-10-07 08:48) [2]>КаПиБаРа © (07.10.05 08:25) [1]
>1. 1км/мин
нет
← →
КаПиБаРа © (2005-10-07 08:51) [3]MBo © (07.10.05 8:48) [2]
Понял. Не дурак :)
← →
palva © (2005-10-07 09:13) [4]2. Когда-то решал эту задачу в плоском варианте. Безопасная зона - все, что выше параболоида вращения (перевернутого).
← →
MBo © (2005-10-07 09:20) [5]>palva © (07.10.05 09:13) [4]
Ну эта задача рассчитана на тех, кто не сталкивался с получением огибающей семейства траекторий. В первый раз это интересно бывает вывести.
← →
palva © (2005-10-07 09:20) [6]5. pi/4 - arctg(1/2)
← →
Sergey_Masloff (2005-10-07 09:28) [7]5) 18.4 градуса примерно? Ну tg = 1/3
← →
КаПиБаРа © (2005-10-07 09:29) [8]palva © (07.10.05 9:20) [6]
arctg(1/3)=18,43 градуса я тоже получил. Только не хватило ума в общем виде формулу вывести.
← →
MBo © (2005-10-07 09:31) [9]>palva © (07.10.05 09:20) [6]
>5. pi/4 - arctg(1/2)
>Sergey_Masloff (07.10.05 09:28) [7]
>5) 18.4 градуса примерно? Ну tg = 1/3
Да, верно. Разные записи, но результат одинаковый.
Решается через моменты сил или на пальцах - через положение центра тяжести на одной вертикали с шарниром.
← →
Rentgen © (2005-10-07 09:31) [10]
> 3. Вася Пупкин получил два предложения о работе.
> Фирма "Рога и Копыта" предлагает ему 18000$ в год с увеличением
> каждый год
> на 2000$, а ООО "ЗюЗюЗю" предлагает тот же стартап с увеличением
> каждые полгода
> на 500$. Куда ему лучше податься?
Повышение зарплаты в Рогах будет всегда больше в два раза. А вот что ему выбрать, это надо смотреть.
P.S.
Или слишком легко или опечатка?
← →
MBo © (2005-10-07 09:37) [11]>Rentgen © (07.10.05 09:31) [10]
Нетрудно, но не очевидно. Так куда Васе слать резюме?
← →
Dok_3D © (2005-10-07 09:39) [12]2 Rentgen © (07.10.05 09:31) [10]
Или слишком легко или опечатка?
Ни то, ни другое.
Это твоя невнимательность :)
← →
SvetaK (2005-10-07 09:45) [13]3. Если Вася меняет работу каждый год ,то ему лучше податься в ООО "ЗюЗюЗю" .Tогда он там за первый год заработает на 500*6=3000$ больше.
← →
svetaK (2005-10-07 09:49) [14]ПАРДОН ПОТОРОПИЛАСЬ Tогда он там за первый год заработает на 500$ больше.
← →
Кабан (2005-10-07 09:52) [15]нигде вроде не сказано, что на 500 повышается зарплата в каждом месяце, или я чего то не понимаю :)
← →
Кабан (2005-10-07 09:53) [16]я бы послал в рога и копыта
← →
КаПиБаРа © (2005-10-07 09:54) [17]3. Если ежемесячную зарплату увеличивают на 2000 и 500, то в ООО "ЗюЗюЗю"
← →
syte_ser78 © (2005-10-07 10:03) [18]Rentgen © (07.10.05 9:31) [10]
Думаю тут смысл не столько в том что год или полгода, а в том что в первом случае - фирма во втором ООО
Я выбираю ООО (хоть что такое "фирма" не понятно).
← →
MBo © (2005-10-07 10:03) [19]>Если ежемесячную зарплату увеличивают на 2000 и 500
нет, годовую
← →
MBo © (2005-10-07 10:05) [20]>syte_ser78 © (07.10.05 10:03) [18]
нет, форма собственности не имеет значения, названия я от фонаря написал
← →
Sergey_Masloff (2005-10-07 10:05) [21]8) с колес наверное можно почистить
unit LList;
interface
uses Classes, SysUtils;
type
PNode = ^TNode;
TNode = record
Data : Pointer;
Next : PNode;
end;
var
List : PNode;
function ReverseList(AList : PNode): PNode;
procedure PrintList(AList : PNode; ATarget : TStrings);
implementation
function ReverseList(AList : PNode): PNode;
var
pPrev, pCur, pNext : PNode;
begin
if AList^.Next = nil then
Result := AList
else begin
pPrev := AList;
pCur := AList^.Next;
AList.Next := nil;
while (pNext <> nil) do
begin
pNext := pCur^.Next;
pCur^.Next := pPrev;
pPrev := pCur;
pCur := pNext;
end;
Result := pPrev;
end;
end;
procedure PrintList(AList : PNode; ATarget : TStrings);
var
Node : PNode;
begin
if AList <> nil then
begin
Node := AList;
while Node^.Next <> nil do
begin
ATarget.Add(IntToStr(Integer(Node^.Data)));
Node := Node^.Next;
end;
ATarget.Add(IntToStr(Integer(Node^.Data)));
end;
end;
end.
← →
Кабан (2005-10-07 10:07) [22]6. 42 и 40
← →
Fishka (2005-10-07 10:16) [23]6. 8 пар решений
(40,42) (35,43) (30,44) (25,45) (20,46) (15,47) (10,48) (5,49)
← →
VICTOR_ (2005-10-07 10:51) [24]4.
300 колечек
← →
VICTOR_ (2005-10-07 11:14) [25]1.
Рискну предположить
2/PI = 0.64
← →
MBo © (2005-10-07 11:32) [26]>MBo © (07.10.05 10:03) [19]
>Если ежемесячную зарплату увеличивают на 2000 и 500
>нет, годовую
уточню формулировку для 3 задачи, как описано в книжке:
1 предлагает 18000 в год, и каждый последующий год годовое
содержание будет увеличиваться на 2000
2 предлагает 18000 в год, и каждый полгода повышение зарплаты на 500 долларов, таким образом, за второе полугодие получит 9500.
>Кабан (07.10.05 10:07) [22]
>6. 42 и 40
Да
>Fishka (07.10.05 10:16) [23]
разность - простое число должна быть
VICTOR_ (07.10.05 10:51) [24]
4.300 колече
Да
← →
Кабан (2005-10-07 11:41) [27]2 MBo
тогда пойду, где не 500 увеличивают
задача сначала не совсем корректно сформулирована была
← →
MBo © (2005-10-07 12:21) [28]>Кабан (07.10.05 11:41) [27]
>тогда пойду, где не 500 увеличивают
>задача сначала не совсем корректно сформулирована была
Да вот так уж она была дана в источнике.
Насчет: "таким образом, за второе полугодие получит 9500" - этого в условии не было, но подразумевалось в объяснении.
Собственно, говоря, если совершенно корректно сформулировать условие - никакого подвоха не будет ;)
Ну ладно, неудачная эта задача получилась.
← →
GuAV © (2005-10-07 12:59) [29]8.
procedure RotateLeft(var S: string; Count: Integer);
var
I, J, B, Len, Replaced: Integer;
Ch: Char;
begin
Len := Length(S);
B := 0;
Replaced := 0;
repeat
Inc(B);
Ch := S[B];
J := B;
repeat
I := J;
J := ((I + Count - 1) mod Len) + 1;
if (J <> B) then
S[I] := S[J]
else
S[I] := Ch;
Inc(Replaced);
until J = B;
until Replaced = Len;
end;
procedure TForm1.Button1Click(Sender: TObject);
var S: string; I: Integer;
begin
S := Edit1.Text;
I := StrToInt(Edit2.Text);
RotateLeft(S, I);
Edit3.Text := S;
end;
← →
Труп Васи Доброго © (2005-10-07 13:07) [30]Я не пойму чего думать? 2000 в год по любому больше чем 500 за полгода=1000в год.
Если не так - объясните, я работу сменю.
← →
default © (2005-10-07 13:09) [31]7. 50(1+sqrt(2))
8. тривиальность
9. классика!
← →
MBo © (2005-10-07 13:11) [32]VICTOR_ (07.10.05 11:14) [25]
1.Рискну предположить 2/PI = 0.64
нет
>Sergey_Masloff
Рабочий цикл - правильный, обвязка не вполне корректная (не иниц. PNext, проверка AList.Next на входе без проверки самого AList).
Если это подправить, получится что-то вроде:
function RevList(Head: PNode): PNode;
var
Temp, RevHead: PNode;
begin
RevHead := nil;
while Head <> nil do begin
Temp := Head.Next;
Head.Next := RevHead;
RevHead := Head;
Head := Temp;
end;
Result := RevHead;
end;
← →
MBo © (2005-10-07 13:19) [33]default © (07.10.05 13:09) [31]
7. 50(1+sqrt(2))
Да.
8. тривиальность
Ой ли?
Уверен, что большая часть программистов напишет это за несколько минут?
Если ты учился на программистской специальности, то подобные вещи наверняка проходились/задавались. Практической пользы от манипулирования односвязными списками, конечно, мало, но мыслить алгоритмически это приучает в какой-то мере.
9. классика!
Чтобы это стало классикой, сначала ведь кто-то должен был придумать, верно? ;)
← →
default © (2005-10-07 13:24) [34]MBo © (07.10.05 13:19) [33]
по 8 честно сказать с первых секунд было видно решение...я не считаю это своей заслугой скорее заслугой задачи...
9. в "Жемчужинах программирования" это задача есть, она великолепна!
← →
GuAV © (2005-10-07 13:29) [35]GuAV © (07.10.05 12:59) [29]
> 8.
Точнее это было 9
← →
REP © (2005-10-07 13:48) [36]3.
ЗюЗюЗю
1 полугодие 1г 9000
2 полугодие 1г 9500
1 полугодие 2г 10000
2 полугодие 2г 10500
---------------------
39000
Рога
1 год 18000
2 год 20000
---------------
38000
← →
MBo © (2005-10-07 14:17) [37]GuAV © (07.10.05 12:59) [29]
9.
Трудно воспринимается, но "упаковка" красивая.
← →
default © (2005-10-07 14:30) [38]MBo © (07.10.05 14:17) [37]
да, неплохо бы словами объяснил
примерно суть такая(буквы отфени взяты)
слева стоит то что ставится на своё место справа то что затирается
d c
b d
k b
e k
то есть то что встало на предыдущем шаге на своём место можно затирать(в исходной позиции) на следующем шаге другим элементов для установки его на новое место
кстати, у Вас в ответе какой алгоритм?
← →
Прынц (2005-10-07 15:03) [39]парни расслдабтесь и идите пить пиво, сегодня ж тяпница!
← →
default © (2005-10-07 15:14) [40]GuAV © (07.10.05 12:59) [29]
по-моему нифига не линеен
расскажи алгоритм на словах
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.064 c