IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задачи олимпиадные(массивы, строки, комбинаторные)
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Посомтрите задания плз

Очень нуждаюсь в помощи

Сообщение отредактировано: NightPaladin -


Прикрепленные файлы
Прикрепленный файл  NSU_2005_spring.doc ( 97.5 килобайт ) Кол-во скачиваний: 622


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


В первой что - то вроди этого получилось
Код
program asd;
Uses
    CRT;
var
    year: Integer;
    mas: array[1..12] of Byte;
    day: Integer;
    mon : Byte;
    week : Byte;
    a: Byte;
(*______________________*)
    fil : Text;
    out : Text;
begin
    ClrScr;
             Assign(fil, '/input.txt');
             Reset (fil);

             Assign(out, '/output.txt');
             ReWrite(out);


           Read(fil,year);

             mas[1]:=30; mas[2]:=28; mas[3]:=31; mas[4]:=30;
             mas[5]:= 31; mas[6]:= 30; mas[7]:=31; mas[8]:=31;
             mas[9]:=30; mas[10]:=31; mas[11]:= 30; mas[12]:=31;
             If (year mod 400 =0) then
                Else If(year mod 4 = 0) AND (year mod 100 > 0) then
                     mas[2]:=29;

             repeat
                   a:= a+1;
                   day:= day + mas[a];

             until day >    255;

             day:= day - mas[a];
             day:= 255 - day;
             mon:= a;
             week:= Round(day/ 7);
                           Write(out, week,' ',day,'.',mon,'.',year);
             close(fil);
             Close(out);
    ReadKey;
end.


Мне только что сообщили, что задача работате, но выходит за отведённое время. Что Делать :o

Сообщение отредактировано: NightPaladin -


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


3 задачу решай сначала smile.gif простая smile.gif
выдели последовательности одинаковых символов.
(уже приводжил пример здесь )
Ну а потом подлинне символов и по цифре определи символо введенный.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


А вот задача 5 интересная.
Ядумаю можно 2 списка завести.
в один кидать каталоги ЕСЛИ ТАМ еще нет такого (азаписываемв начало списка-времение меньше).
а в другой файлы если там такого еще нет.
Итого для добавления придется просмотреть список (максимум-весь) и добавить в начало потом если надо.
По времени это равнозначно будет добавлению в конец списка. (почти smile.gif )

добавил позже:
А что если вместо спискаиспользовать AVL дерево? я вот подумал - проверка есть ли уже элементбудет ну очень быстрой....

Сообщение отредактировано: Oleg_Z -


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


С третьей щас пытаюсь допереть. Вот я вывел все последовательности сравнил их и получил буквы, а как слова составить- ведь будут отдельно послед. отдельно одиночные буквы

А как первую уложить в 1 секунду

Сообщение отредактировано: NightPaladin -


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Вот я вывел все последовательности сравнил их и получил буквы
ну и все . Все буквызаписатьдруг задругом и все. вот тебе все сообщение.


А что значит 1 уложитиь в 1секунду? вот мне этовсегда не понятно .... ведь это прямо зависит от железа и от компилятора -какойбдетсгенерирован код.
1 что работаетбольше секунды?

Сообщение отредактировано: Oleg_Z -


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Они выложили результат теста - timeout - не уложились батенька...


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Цитата(Oleg_Z @ 15.05.05 8:55)
А ну да... собсвенно зачем делать перебор по дням что бы найти 255 день?
достаточно посчитать сначала до нужного месяца, для этого все числа известны,надо только проверить високосныйли годи все!


Я немного не понял - как бы это - более математически как это вычисляется?


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


по третьей пока только такие наброски
Код
program asd;
Uses crt;
var
   s:string;
   mas: array[a..z] of Byte;
procedure getposl(s:string);
var
  i   :  byte;
  ss  :  string;
  b   :  boolean;
begin

 ss:=''; b:=false;
 for i:=1 to length(s) do
     begin
          if b then begin ss:=ss+s[i] end; {next}
          if (s[i]=s[i+1]) and (b=false) then begin ss:=ss+s[i]; b:=true; end; {new}
          if ((NOT((s[i]=s[i+1])))or (i=length(s))) and (b=true) then begin
          if ss<>'' then {*****}writeln(ss);{*****} ss:='';b:=false end;
     end
end;

begin
readln(s);

      mas[a]:=2; mas[b]:= 22; mas[c]:= 222; mas[d]:=3; mas[e]:=33; mas[f]:=333;
      mas[g]:=4; mas[h]:= 44; mas[i]:=444; mas[j]:=5; mas[k]:=55; mas[l]:=555;
      mas[m]:=6; mas[n]:=66; mas[o]:=666; mas[p]:= 7; mas[r]:= 77; mas[s]:=777;
      mas[t]:=8; mas[u]:=88; mas[v]:=888; mas[w]:=9; mas[x]:=99; mas[y]:=999;
getposl(s)
end.


Сообщение отредактировано: volvo -


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Цитата(NightPaladin @ 15.05.05 8:56)
Я немного не понял - как бы это - более математически как это вычисляется?

Извеняюсь понял :D


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Выложил вот это решение первой задачи - тоже во время не укладывается. lol.gif

Код

program asd;
Uses
    CRT;
var
    num, count, i    :  Integer;
    st   :  String;
    by,num2, count2  :  Byte;
    ch,ch2 :  Integer;
(*______________________________ *)
    vrem   : Integer;
begin
    ClrScr;
            WriteLn('Input number:');
            ReadLn(num);

            For  count:= 12 to num-1 do
                 begin
                       Str(count,st);
                       by:= Length(st);
                       For count2:= 1 to by do
                           begin
                                Delete(st, count2, 1);
                                Val(st, num2,i);
                                vrem:=num2 + count;

                                If vrem = num then
                                   WriteLn(num2,'+',count);
                           end;
                 end;
    ReadKey;
end.


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 15:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name