XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Трактир
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Dead Jay
Братег Дракончег
offline
Опыт: 8,475
Активность:
Несколько заданий для любителей инфоматики
  1. Алгоритм
Что делает данный алгоритм?
алгоритм ДУМА(целые: n,k)
начало алгоритма
n:=0
i:=0
цикл:пока i < k выполнить:
n:=n + 2*i + 1
i:=i+1
конец цикла
конец алгоритма
Ответ обосновать. (Предполагается, что на вход алгоритма подаются два целых числа – n и k. Считать, что переменная i является целочисленной.)
  1. Обмануть обманщика
Коля загадал натуральное число от 1 до 30, а Петя пытается угадать его. Для этого Петя задает Коле несколько вопросов, на каждый из которых возможен ответ либо «да», либо «нет». После того, как заданы все вопросы, Петя должен назвать загаданное число. Однако при ответах на вопросы Коле разрешается не более одного раза солгать, то есть на один из задаваемых вопросов (конечно же, не указывая, на какой именно по счету) разрешается дать противоположный ответ. За какое наименьшее количество вопросов и каким именно образом Петя сможет гарантированно определить загаданное Колей число?
3.Зазеркалье
Имеется множество из N точек плоскости (указаны их координаты). Опишите алгоритм, проверяющий, является ли это множество точек центрально-симметричным.
  1. Коллективный разум
Подземелье замка Черного Властелина представляет собой квадрат 4x4, ячейками которого являются 16 комнат. В каждой комнате-ячейке в заточении сидит добрый волшебник. Каждый из них знает одну часть заклинания (причем каждый свою), но выбраться из подземелья волшебники могут только тогда, когда каждый из них будет знать все 16 частей заклинания. За один день волшебник может либо сообщить в соседнюю (за стеной) комнату все части заклинания, которые знает на данный момент, либо получить от одного из своих соседей (через стенку) известные тому части заклинания. За какое количество дней и каким образом все волшебники смогут получить все части заклинания?
  1. Чудо инженерной мысли
На плоскости собрали некий механизм, состоящий из шестеренок с одинаковым шагом (т.е. расстоянием между соседними зубьями). Все шестеренки пронумерованы и для каждой из них известны номера шестеренок, с которыми она зацеплена. Описать алгоритм, определяющий, можно ли привести весь механизм в движение, вращая какую-нибудь из шестеренок.
  1. Нить Ариадны
Попав в лабиринт, состоящий из одинаковых квадратных комнат, каждая из которых может иметь от 1 до 4 дверей в соседние комнаты, путник долго блуждал по нему, пока не нашел клад. Во время поиска он составил описание своего маршрута, обозначая каждый переход из комнаты в комнату буквами: С (север), В (восток), Ю (юг), З (запад). Опишите алгоритм, определяющий по заданной записи самый короткий путь назад.
Задачи практической части
В практической части олимпиады требуется написать решения задач – программы, соответствующие техническим требованиям и выполняющие оговоренные условиями задачи действия, на языке Паскаль или Си.
Для проверки отправляются только исходные тексты программ (файлы *.pas, *.c, *.cpp) в соответствии с техническими требованиями. Компилироваться программы будут жюри перед проверкой. Программы, не прошедшие компиляцию, к проверке не допускаются.
Программы будут проверены на комплекте тестов в полуавтоматическом режиме (внимательно следите за форматами выходных файлов: несоответствие формата выходного файла может привести к тому, что результат прохождения теста не будет засчитан).
Входные данные берутся из текстового файла input.txt, результат выполнения программы выводится в файл output.txt в установленном формате.
Ограничения на время выполнения программы по каждому из тестов: 10 секунд. Программы, не укладывающиеся во время прохождения теста в установленные ограничения или выдающие ошибку, считаются не прошедшими данный тест.
Для проверки работы загружаются через онлайн-форму.
  1. Проще простого
Имеется натуральное число N. Выяснить, на какое наименьшее количество непересекающихся групп можно разбить числа от 1 до N так, чтобы сумма чисел в каждой из групп была простым числом.
Вход:файл input.txt, в котором записано единственное число N
Ограничения: 1<N&#8804;30000
Выход: файл output.txt, содержащий единственное число (минимальное количество групп)
Пример:
input.txt output.txt
18 3
Примечание к примеру: числа от 1 до 18 можно разбить на три группы с нужным свойством (например, 1+3+4+5+6+18, 2+7+8+9+10+11+12+13+14+17 и 15+16 с суммами 103, 37 и 31), на меньшее число групп, как легко показать, нельзя.
  1. Острова
В океане расположен архипелаг из N островов, каждый из которых имеет форму выпуклого многоугольника. Острова не соприкасаются и не пересекаются. Эти острова необходимо соединить между собой мостами так, чтобы от любого острова архипелага можно было добраться до любого другого. Каждый мост должен соединять пару островов, при этом суммарная длина мостов должна быть минимальной.
Вход: файл input.txt, имеющий следующую структуру: в первой строке входного файла записано число N – количество островов в архипелаге. Далее идет N строк с описанием островов. В каждой строке описывается один остров, который задаётся числом вершин (первое число строки) и далее их координатами в порядке обхода по часовой стрелке (у каждой вершины первой идет абсцисса, а второй - ордината). Координаты внутри строки разделяются пробелами.
Ограничения: число N – натуральное от 2 до 50 (включительно), для каждого острова число вершин не превосходит 20, все координаты – целые числа, не превосходящие по модулю 30000.
Выход: файл output.txt, содержащий два числа (по одному в строке), первая строка ¬- число: количество мостов; второе строка - число: суммарная длина мостов с точностью до 0.001
Примеры:
Пример 1. Пример 2.
Входной файл input.txt содержит:
2
4 –2 –2 –2 2 2 2 2 –2
3 3 –2 3 2 6 0
Результат (файл output.txt):
1
1 Входной файл input.txt содержит:
3
4 –2 –2 –2 2 2 2 2 –2
3 -3 0 –5 –1 –5 1
3 6 –5 8 –4 8 -5
Результат (файл output.txt):
2
6
  1. Шифр Цезаря
Некоторый русский текст, хранящийся в файле, зашифрован следующим образом: каждая буква текста циклически сдвигается на одно и тоже количество символов, а все остальные символы (знаки препинания и пробелы) остаются неизменными. При шифровке большие буквы переходят в большие, а маленькие в маленькие. Будем для простоты считать, что русский алфавит состоит из 32 букв (за буквой «е» следует буква «ж»). Требуется написать программу автоматической расшифровки текста.
Вход: файл input.txt c зашифрованным текстом.
Ограничения: длина текста не превосходит 250 символов.
Выход: Файл output.txt с расшифрованным текстом.
Пример:
input.txt output.txt
А сбвпубя, оп а фтубм Я работаю, но я устал
Примечание: размер выходного файла должен совпадать с размеров зашифрованного файла, не должно появляться лишних пробелов, знаков препинания и прочих разделителей.
З.Ы. решения нужны до 16 числа! Помогите кому не лень =)
Старый 13.04.2009, 10:33
Dead Jay
Братег Дракончег
offline
Опыт: 8,475
Активность:
Задания составлял не я. Так что там этот алгоритм делает?
Старый 13.04.2009, 10:59
NETRAT

offline
Опыт: 83,762
Активность:
как-то так
» задача 1
итерации цикла:
0: n := n + 2*0 + 1
1: n := n + 2*1 + 1
2: n := n + 2*2 + 1
...
i: n := n + 2*i + 1
тогда
result := 0 + 1 + 3 + 5 + 7 + ... + (2*(k-1) + 1) = n + 1 + 3 + 5 + 7 + ... + (2*k-1)
где result - это значение переменной n к концу алгоритма(n - входное значение n)
то есть для k =
0(цикл не выполняется!): result := 0
1: result := 1
2: result := 4
3: result := 9
4: result := 16
...
замечаем что a^2 - (a-1)^2 = 2*a - 1 и совпадает с членом ряда result, значит
result := 0 // для всех k <= 0
result := k^2 // для всех k > 0


афайр такая хрень мне в 8 классе на олимпиаде попадалась

Отредактировано NETRAT, 13.04.2009 в 11:49.
Старый 13.04.2009, 11:04
NETRAT

offline
Опыт: 83,762
Активность:
  1. на вскидку это log(2,30), для того что бы падла не соврал нужны какие-то проверочные вопросы... можно тупо повторять все вопросы тогда это будет 2*log(2,30) ~ 2 * 5, впрочем, я почти уверен что есть вариант короче
Старый 13.04.2009, 11:08
J
expert
offline
Опыт: 48,747
Активность:
NETRAT забей, люблю иногда под тупивать...

5. Чудо инженерной мысли



ну а че, берем одну шестеренку, и циклом по всем ее шестеренкам, для каждой шестеренки вызывать эту же функцию, однако фишко в том что еще нужно проверять не соединены ли дочерние шестеренки с родительской, иначе крутится не будет

Отредактировано J, 13.04.2009 в 11:55.
Старый 13.04.2009, 11:34
NETRAT

offline
Опыт: 83,762
Активность:
Жонег, йа не знаю откуда ты такие формулы берешь... откуда куб вообще?! обрати внимание на члена ряда (2*i + 1) = (i + 1)^2 - i^2
Старый 13.04.2009, 11:46
J
expert
offline
Опыт: 48,747
Активность:
ты написал сначало n = n+k^2, у меня в голове все понапуталось и я аписал формулу
n = (k^3)/3+(k^2)/2+k/6
для Суммы(i^2, i=0..k)
Старый 13.04.2009, 11:49
NETRAT

offline
Опыт: 83,762
Активность:
  1. все верно - итого, алгоритм обхода графа с расстановкой уровней глубины механизма(для каждой шестеренки), при этом шестеренка с четного уровня не может быть соединена с шестеренкой с другого четного уровня, а шестеренка с нечетного не может быть соединена с шестеренкой нечетного уровня.
то есть должен быть граф, который не имеет циклов нечетной длинны, алгоритмы для определения циклов в графах есть, остается только проверить длины этих циклов
Старый 13.04.2009, 11:55
J
expert
offline
Опыт: 48,747
Активность:

6. Нить Ариадны


ну... просто инвертируем все повороты, лево в право, право в лево, верх в низ, низ в верх.
а если лабиринт квадратный и без препятствий (что не оговорено в условии) то просто пары поворотов верх-вниз и вправо-влево сокращаются, и остается кротчайший путь, если же нет... то незнаю

3. Зазеркалье


ну простейшее решение это двойной цикл по всем точкам на проверку равенство с инвертированными знаками

Отредактировано J, 13.04.2009 в 17:05.
Старый 13.04.2009, 12:27
Dead Jay
Братег Дракончег
offline
Опыт: 8,475
Активность:
я канеш ппц туплю но мне чуть попонятней бы объяснили... а про Коллективный разум мы смогли за 8 дней сделать
Старый 13.04.2009, 13:52
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:
Подождите, а за 1 день может сделать действие только 1 волшебник? ведь по идее могут все, тогда вообще можно за 4, а не за 6..т.е. если от краев всей линией перемещать
Старый 13.04.2009, 18:18
J
expert
offline
Опыт: 48,747
Активность:
Артте делать за день ход может каждый волшебник, но ход заключается либо в принимании, либо в отдавании, т.е. за один ход нельзя отдать и принять одновременно, и действие только к одному соседнему волшебнику...

4. Коллективный разум


у меня тоже за 8 ходов получилось
Старый 13.04.2009, 18:23
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:
Ааа, стоп, каждый из них, я че-то про 1 подумал( Тогда 8
Старый 13.04.2009, 18:24
NETRAT

offline
Опыт: 83,762
Активность:
быстрее чем за 8 дней у них не получится... если бы они ОБМЕНИВАЛИСЬ знаниями, все было бы намного быстрее
Старый 13.04.2009, 18:45
Dead Jay
Братег Дракончег
offline
Опыт: 8,475
Активность:
ну а кто практические на СИ или хотяб паскале написать может? ибо я нубас в програмировании
Старый 13.04.2009, 19:17
Hellfim
Новичок
offline
Опыт: 79,890
Активность:
Dead Jay, а зачем пошел на олимпиаду? Выиграешь - на область поедешь.
Старый 13.04.2009, 19:20
Dead Jay
Братег Дракончег
offline
Опыт: 8,475
Активность:
так интереса ради занятся нечем было. мы даже команду "Кавайная Тима" назвали
Старый 13.04.2009, 19:30
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:
уу, я в городе когда взял 2 место, так меня не взяли в краевую Т_Т
Старый 13.04.2009, 19:42
Dead Jay
Братег Дракончег
offline
Опыт: 8,475
Активность:
ну что кто поможет решить практчсекие задания?
Старый 14.04.2009, 05:02
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:29.