Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с массивом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NightPaladin
Ещё одна задача. В ней надо постоянно исключать каждый второй элемент т.к они расположены по кругу, то закончив один круг т.е. дойдя до еденицы, новый круг проходит уже для оставшихся элементов, и т.д. до тех пор пока не останется одно - вот его и надо вывести на экран
Собственно условие
Числа от 1 до N расставляем по кругу и вычеркиваем каждое второе число, начиная
с 1. Определить какое число останется последним.
На входе натуральное число N (1<= N <= 1000 000), на выходе последнее число.
Пример Результат

5 3
Jahnerus
Код
uses
 crt;
const
 n=5;
var
 a:array[1..n] of integer;
 b:array[1..n] of boolean;
 i,j,k:longint;

begin
 clrscr;
 randomize;
 for i:=1 to n do begin
   a[i]:=random(100);
   b[i]:=true;
 end;
 k:=0;i:=0;j:=0;
 repeat
 i:=i+1;
 if i>n then i:=1;
 if b[i] then begin
   j:=j+1;
   if (j mod 2) =0 then begin
     b[i]:=false;
     k:=k+1;
   end;
 end;
 until k=n;
 writeln('Poryadkoviy nomer ',i);
 writeln('Znachenie ',a[i]);
 readln;
end.
volvo
Jahnerus
Цитата
На входе натуральное число N (1<= N <= 1000 000)

Это тебе ни о чем не говорит? Ты прогонял программу со значением 40000?
Jahnerus
volvo
Цитата
Ты прогонял программу со значением 40000

Да и на 1000000 прогонял работает нормано!
Чё тебя не устраивает не пойму...
volvo
Jahnerus
Код

const
n=1000000;
var
a:array[1..n] of integer;
b:array[1..n] of boolean;


Это работает?
volvo
А вот это - работает для любых значений, которые помещаются в LongInt:
Код

const
 n:longint = 2000;

var
 last, i, pred: longint;
begin
 pred := $0001;
 while pred < n do
   pred := pred shl 1;
 if pred = n then last := 1
 else
   begin
     pred := pred shr 1;
     last := 1 + 2*(n - pred);
   end;

 writeln('оставшееся число:', last);
end.
NightPaladin
Всем большой сэнкс volvo и Jahnerus
Если не трудно могли бы вы пояснить код, если будет время построчно.
Заранее благодарю и с уважением NightPaladin
P.S. вопрос наверное тупой, а как рейтинг повышать?
GoodWind
Скажи одному из модераторов (мне, Volvo, или Oleg_Z)
я так понял ты хочешь поднять рейтинг Jahnerus`у ?
Сделано...
Altair
Цитата
Скажи одному из модераторов

Вообще-то я не модератор smile.gif
Цитата
группа: администраторы

:D rolleyes.gif
GoodWind
Цитата
Вообще-то я не модератор

зато ты до-сих пор числишься в модераторах раздела ;)
посмотри
Altair
Больше 10000 программа Jahnerus не потянет. Массивы такие не задают уже....

так что повышение рейтингане оправданно, GoodWind. Ты поторопился, не проверив.

Массивы не могут быть длинее чем 65536 элементов.
...
Работает программа volvo ... только.
NightPaladin
Опять здравствуйте. Вообщето я имел ввиду повысить рейтинг и Jahnerus и volvo. Раз Jahnerus рейтинг уже повысили и для этого надо выслать заяву, то прошу повысить его и volvo. Или это на PM отсылать надо?
Altair
:D :D :D :D
Jahnerus
Oleg_Z
Цитата
Больше 10000 программа Jahnerus не потянет. Массивы такие не задают уже....

Оплошность моя в том что писал я её на Delphi и проверял там же .... а затем лишь чучуть код под ТП поменял ... и не проверил ... так что не судите строго бывает rolleyes.gif
Altair
Цитата
так что не судите строго бывает 

Ок :D
Но если это не пойжет на FPC, вообзе снижу на -5

шутка :D :D
Jahnerus
Ценю юмор ....
Цитата
Но если это не пойжет на FPC, вообзе снижу на -5

Ну FPC то покруче будет чем TPC так что всё рулит !!!
А рейтинг помойму снижать дальше не куда ... ;)
Флогримм
Цитата
Но если это не пойжет на FPC, вообзе снижу на -5

снизить значит уменьшить, значит -, а Зю сказал, что снизит на -5 итого -(-5)=5=+5

Jahnerus радуйся, ща повысят lol.gif lol.gif lol.gif :P
GoodWind
Цитата
А рейтинг помойму снижать дальше не куда ...

а вот и есть... был тут кто-то с рейтингом -1 lol.gif
Jahnerus
GoodWind
Цитата
был тут кто-то с рейтингом -1

Я тоже хочу рейтинг -1 sad.gif . Ты же всемогущий модератор ... чё тебе стоит ;) .
Вот вас таких много с положительными рейтингами, а я один буду !!! :D Уникальный
APAL
Цитата(Jahnerus @ 29.11.04 17:46)
GoodWind

Я тоже хочу рейтинг -1  sad.gif . Ты же всемогущий модератор ... чё тебе стоит  ;) .
Вот вас таких много с положительными рейтингами, а я один буду !!!  :D Уникальный

Мазохист..... я не садист, но помочь могу... хотя смысла в этом нет... blink.gif :D

[Оффтоп]Когда-то в БК я попросил паладина наложить на меня молчанку.... тоже без всякого смысла, но ради прикола... rolleyes.gif [/Оффтоп]
Jahnerus
Спасибо за понимание ... APAL lol.gif
GoodWind
APAL, млин я тоже чуть ему не понизил lol.gif lol.gif
был бы вообще уникальный lol.gif lol.gif
Jahnerus, хочешь быть уникальнее ?
Jahnerus
GoodWind
Цитата
Jahnerus, хочешь быть уникальнее ?

Конешно , а почему бы и нет ... lol.gif скока у вас там минимальный рейтинг ?
:D да и ещё надо было вам группу сделать UNIQUE ... или вместо Статуса не "Новичок" и даже не "Ищущий истины", а "Уникальный"... :P

сделал lol.gif . GoodWind
Altair
Апалу: плохой пример подаешь - ты же админ - образец для подражания.
ГудВинду: а ты вообще с ума сошел? Ты какого *** тут флейм допустил.
Вольво: а ты должен был вовремя вмешаться, понизить ему рейтинг еще! smile.gif
Я: закрываю тему, и меняю статус ему на "уникальный".

Т.к. статус и так уже уникальный - рейтинг вернул до с -2 до 0 APAL
GoodWind
Гы... зато весело было lol.gif


А кто тебе разрешал открывать тему, закрытую админом? angry.gif
smile.gif
Олег.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.