Коля очень любит играть в космонавтов. Правда сегодня он выбрал игру еще более космического масштаба и играет в большие космические объекты. Его игра выглядит так: В космосе на отрезке находятся n метеоритов. Для каждого метеорита известна его масса, и в зависимости от знака при массе, метеориты летят влево (при знаке минус), или же вправо. При столкновении метеорит с меньшей массой взрывается, при одинаковой массе уничтожаются оба метеорита. При этом метеоритов с нулевой массой не бывает. Узнайте, какие метеориты уцелели и выведите их в том же порядке, в котором они были изначально, чтобы Коле быстрее доиграть в игру, потому что ему уже пора идти обедать.. Входные данные В первой строке задано число n — количество метеоритов. (1⩽n⩽10е6). Во второй строке дано n чисел — массы и направления движения метеоритов. (−10е9⩽ai⩽10е9, ai≠0). Выходные данные Выведите две строки: на первой количество уцелевших метеоритов, на второй массы и направления оставшихся метеоритов после всех столкновений. Порядок вывода метеоритов должен совпадать с их изначальным расположением. Примеры входные данные 3 10 2 -5 выходные данные 1 10 входные данные 5 -5 1 -1 4 -3 выходные данные 2 -5 4 входные данные 2 8 -8 выходные данные 0
ответ:
1.
13, вроде бы
1) абдик
2) абджк
3) абвдик
4) абвджк
5) абвжк
6) авжк
7) авджк
8) авдик
9) агек
10) агвжк
11) агвджк
12) агвдик
13) агежк
2.
1.абеил
2.абезл
3.абвеил
4.абвезл
5.абвзл
6.авзл
7.авезл
8.авеил
9.агзл
10.агжзл
11.агжкл
12.адгзл
13.адгжзл
14.адгжкл
15.аджзл
16.аджкл
3.количество путей в город л = сумме путе в города и, з, ж и к (и(3)+з(10)+ж(3)+к(3))=19
4.правильный ответ: 12.
5.в подобных анализ начинают с конечного города (в нашем случае - g). в город g можно попасть из d, f и e ⇒ k(g) = k(d)+k(f)+k(e).
аналогично
k(d) = k(b) + k(f) = 2 + 4 = 6;
k(f) = k(b) + k(c) + k(e) = 2 + 1 + 1 = 4;
k(e) = k(c) = 1;
k(b) = k(a) + k(c) = 1 + 1 = 2;
k(c) = k(a) = 1
k(g) = k(d)+k(f)+k(e) = 6+4+1 = 11
объяснение:
вот мой г**нокод на javascript с одного онлайн-курса, но с использованием while. скину сотку на телефон любому, кто в нем разберется:
function cycle(a, b) {
while(a ! = b) b = a> b ? [a,a=b][0]-a : b-a
return a;
}
но поскольку я вижу сверху ключевое слово repeat, полагаю, нужно это сделать в pascal. ради б-га:
var a,b: integer;
begin
a : = 32;
b : = 32;
while not (a = b) do
begin
if a > b then begin
a : = a - b;
end else
b : = b - a;
end;
writeln(a);
end.