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

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

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

> задачи олимпиадные(массивы, строки, комбинаторные)
NightPaladin
сообщение 15.05.2005 7:22
Сообщение #1


Пионер
**

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

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


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

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

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


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


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
NightPaladin
сообщение 15.05.2005 8:30
Сообщение #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 - 15.05.2005 8:33


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


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

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

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


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


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


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

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

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


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

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

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


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


Пионер
**

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

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


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

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

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


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


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

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

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


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


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

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


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


Пионер
**

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

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


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


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


Пионер
**

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

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


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


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


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NightPaladin
сообщение 15.05.2005 9:01
Сообщение #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 - 15.05.2005 9:34


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


Пионер
**

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

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


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

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


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NightPaladin
сообщение 15.05.2005 9:27
Сообщение #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

 



- Текстовая версия 18.07.2025 17:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"