Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
kanbodows

Олимпиадная задачка. Если есть идеи то помогите. Вместе решим

07.11.2011, 22:39. Показов 1452. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
B. Время исполнения
Time Limit: 1000 ms
Memory Limit: 1024 kb

При проектировании программы на языке низкого уровня иногда требуется оценить время исполнения программы. Каждая команда при выполнении занимает некоторое количество времени в тактах процессора.

Дан фиксированный набор команд и регистров:

Регистры:
A,B,C,D
Каждый регистр может хранить целое число в диапазоне от 0 до 2011 включительно.

Команды:
MOV reg_dst,number - поместить целое число (number) в регистр (reg_dst)
MOV reg_dst,reg_src - поместить знaчение регистра источника(reg_src) в регистр приемник(reg_dst)
XCHG reg1,reg2 - обменять местами значения двух регистров - reg1 и reg2
LOOP label - выполняется цикл с метки label до LOOP.
LOOP проверяет, если регистр С > 0, то совершается переход на метку и уменьшается C на единицу, иначе цикл заканчивается и выполняется следующая команда за командой LOOP.
Метка всегда является отдельной строкой и начинается со знака ":". Например - :label1.
NOP - ничего не делать
EXIT - окончание выполнения.
Требуется оценить общее время исполнения данной программы в тактах процессора.


Input
Первые 5 строк содержат количество тактов процессора (числа 0 < N < 1000), требуемые для исполнения каждой из пяти приведенных выше команд в следующем порядке:
MOV
XCHG
LOOP
NOP
EXIT
Далее идет программа, время выполнения которой требуется оценить.
На каждой строке - точно одна команда или метка. Все операторы в программе корректны и записаны латинскими буквами.
Метка всегда находятся выше соответствующей команды LOOP.Допускаются вложенные и пересекающиеся циклы
Параметры команд MOV и XCHG записываются через запятую.
Общий размер программы не превышает 7000 строк.
Программа гарантировано завершается командой EXIT не более чем через 14000 исполнений команд.


Output
В выходном файле вывести одно число 0 < N < 1 000 000, время исполнения программы в тактах процессора.


Sample Input
1
2
3
4
5
MOV A,2
MOV C,3
XCHG A,C
:label1
NOP
LOOP label1
EXIT


Sample Output

30
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2011, 22:39
Ответы с готовыми решениями:

Подсуммы (олимпиадная задачка), нужны идеи
64 megabytes / 1 seconds / stdin / stdout Не все числа одинаково полезны. Если, например, вам потребуется насобирать сумму как можно...

Разработка и маркетинг если есть интересные идеи
Готов взятся за исполнение и маркетинг интересных идей за долю в проекте Сам был в такой ситуации когда мне один псих стучал из киева...

Программа, которая считает площадь круглой заготовки, если с неё вырезать три прямоугольника разного размера. Есть идеи?
Нужна программа с использованием функций

1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
08.11.2011, 11:26
Ну и что ты уже написал ?
Насколько я понимаю проблемы могут быть только со временем выполнения

Добавлено через 15 минут
Для решения задачи нужно выполнить код
При это требуется выполнять все команды и вести состояние 4 регистров
попутно считать число тактов

Можно построить двупроходный компилятор
1 проход
Заносим программу в массив PROG ( хватит 7000 структур )
Заносим все метки в отдельный ассоциативный массив LABELS
При этом запоминаем на какой строке программы находится метка
Все операторы GOTO вместе с метками переходов заносим в программу

2 проход
В массиве PROG во всех операторах GOTO заменяем строчные метки на номер строки
Номер определим по массиву LABELS

3 проход
Выполняем программу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2011, 11:26
Помогаю со студенческими работами здесь

методом неопред. коэфф. не получается, а если делать так(картинка ниже), так же не выходит. есть идеи?
∫(3x-1)dx/(x2+4)(x2+9); Сразу методом неопред. коэфф. не получается, а если делать так(картинка ниже), так же не выходит. есть идеи?

Олимпиадная задачка
Мальчик Вася, чтобы попасть к себе домой на 10-й этаж, сначала поднимается до 7-го, а потом идет 3 этажа наверх, потому что в лифте...

Олимпиадная задачка
суть задачи в том что машина едет только прямо и напрво,изначально смотрит как бы вверх, и ей надо добрать из начальной точки в конечную по...

олимпиадная задачка
На доске наклеено несколько листов объявлений. Все они прямоугольной формы. Некоторые письма накладываются частично или полностью. Все...

Олимпиадная задачка
cut Помогите пожалуйста, напишите программу на C++. Входной файл: input.txt Выходной файл: output.txt Нарушение правил п....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru