Отримання знань
дистанційна підтримка освіти школярів
Тут ви можете виконати завдання чи задати питання по змiсту цього уроку.
Михальов Володимир (StarRover) 2013-10-04 12:57:07
Задача Djoz1 Під час громадянської війни 1861-1862 р.р між Північними та Південними Американськими Штатами невеликий загін "північних" під командою генерала Джозефуса потрапив в оточення. Було прийняте рішення прориватися поодинці. Але хто понесе прапор? За командую Джозефуса він і солдати стали в коло. Кожен отримав свій номер в порядку обходу кола. За командою кожен з солдатів "викинув" пальці. В сумі отримали число К. Рахувати завжди починали з солдата з найменшим номером в напрямку збільшення номерів по колу, відраховували К-го, він виходив з кола. Так робили доти, поки не залишився один солдат, який виніс прапор, а ми дізналися про цю задачу :-) Дано N солдатів у колі і число k. Все відбувається за легендою. Який солдат понесе правпор? Технічні умови. Програма читає з клавіатури 2 натуральні числа N s К через пропуск. Кожне не більше 1000. Програма виводить на екран одне число - шукану величину. Приклад Введення: 7 45 Виведення: 5 ----------------------------------------------------------------------- {Djoz1} const max=10000; var n,k,i,del:longint; a:array[1..max] of longint; begin Read(n,k); for i:=1 to n do a[i]:=i; while n>0 do begin del:=(k mod n); if (del<>0) then for i:=del to n-1 do a[i]:=a[i+1]; n:=n-1; end; WriteLn(a[1]); end. |
Михальов Володимир (StarRover) 2013-10-04 15:10:12
Задача Djoz2 Під час громадянської війни 1861-1862 р.р між Північними та Південними Американськими Штатами невеликий загін "північних" під командою генерала Джозефуса потрапив в оточення. Було прийняте рішення прориватися поодинці. Але хто понесе прапор? За командую Джозефуса він і солдати стали в коло. Кожен отримав свій номер в порядку обходу кола. За командою кожен з солдатів "викинув" пальці. В сумі отримали число К. Рахувати почали з солдата з номером 1 в напрямку збільшення номерів по колу, відраховували К-го, він вийшов з кола. Так робили доти, поки не залишився один солдат, який виніс прапор, а ми дізналися про цю задачу :-) Дано N солдатів у колі і число k. Все відбувається за легендою. Який солдат понесе правпор? Технічні умови. Програма читає з клавіатури 2 натуральні числа N і К через пропуск. Кожне не більше 1000. Програма виводить на екран одне число - шукану величину. Приклад Введення: 6 7 Виведення: 5 ------------------------------- {Djoz2} const max=1000; var n,k,i,del:longint; a:array[1..max] of longint; begin Read(n,k); for i:=1 to n do a[i]:=i; del:=1; while n>0 do begin del:=((k mod n)+del-1) mod n; if (del<>0) then for i:=del to n-1 do a[i]:=a[i+1] else del:=1; n:=n-1; end; WriteLn(a[1]); end. |
В системі:
гості - (1); користувачі -
(0)