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

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

07.11.2011, 22:39. Показов 1443. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru