L. Стековая машина

Codeforces
IDCF10259L
Time2000ms
Memory256MB
Difficulty
English · Original
Formal · Original
Дано $0 <= N <= 100$ целых неотрицательных чисел, выведите их сумму. Эх, как было бы хорошо, если бы вам нужно было написать программу для решения такой задачи на C++ или Python... У вас есть машина, память которой — это стек, элементы которого являются целыми числами. Количество элементов стека в данный момент мы будем обозначать как $s z$. Напомним, что стек — это абстрактная структура данных, хранящая коллекцию элементов, и работающая по принципу _LIFO_ (последним пришёл — первым вышел). Стек поддерживает две базовые операции: положить элемент на вершину стека, взять элемент с вершины стека. В качестве аналогии можно представить стопку тарелок: вы не можете оперировать с тарелками не на вершине стопки. Список доступных инструкций приведен ниже. _RTE_ (Run-Time Error) обозначает, что выполнение программы завершилось с ошибкой, вам следует избегать таких ситуаций. Также доступны условный оператор и цикл while. Чтобы их использовать, сначала нужно научиться задавать какие-то условия: К любому условию можно добавить _NOT_ в начале, например _NOT GZ_ (обратите внимание на пробел) _TRUE_ если на вершине стека 0 или отрицательное число. Условный оператор: Цикл while: В обоих случаях _cond_ — одно из условий, описанных выше, _body_ — тело условного оператора или цикла — последовательность команд, которые будут выполнены, если _cond=TRUE_ (один раз в случае условного оператора, или много раз в случае цикла). Циклы и условные операторы могут быть вложенными. Вы должны написать программу для этой машины, котора решает следующую задачу: Изначально стек был пуст. Числа $N, a_1, a_2, \\dots, a_N$ положили на стек в таком порядке (наверху стека лежит $a_N$, $N$ лежит в самом низу). После выполнения программы на вершине стека должно лежать число $a_1 + a_2 + \\dots + a_N$ (также в стеке могут лежать другие числа). Гарантируется, что $0 <= N <= 100$, $0 <= a_i$. Каждая инструкция (а также проверки условия для условного оператора и цикла) выполняется 1 такт. Выполнение программы должно занимать не более $(N + 22)^2$ тактов. В процессе выполнения программы не должно происходить _RTE_. В этой задаче нет входных данных. Выведите программу для стековой машины, решающую описанную задачу. Вы не обязаны использовать отступы. Любой пробельный символ может быть заменён на любое ненулевое количество пробельных символов, вставлять пробельные символы внутрь инструкций нельзя. Все инструкции должны быть записаны именно так, как они записаны в тексте условия. Ответ на пример из условия содержит две программы, которые вычисляют сумму чисел от 1 до $N$ для $N >= 0$. В стеке могут храниться числа произвольного размера. И ваша программа должна работать для $a_i$ произвольного размера. Намеренные попытки дестабилизировать работу проверяющей системы могут повлечь дисквалификацию команды. Жюри оставляет за собой право решать, что является невинной ошибкой, а что — намеренной попыткой дестабилизировать работу проверяющей системы. ## Входные Данные В этой задаче нет входных данных. ## Выходные Данные Выведите программу для стековой машины, решающую описанную задачу.Вы не обязаны использовать отступы. Любой пробельный символ может быть заменён на любое ненулевое количество пробельных символов, вставлять пробельные символы внутрь инструкций нельзя.Все инструкции должны быть записаны именно так, как они записаны в тексте условия. ## Пример Входные данные Выходные данныеPUSHZ SWAP2 WHILE NOT EZ DO BEGIN COPY SWAP3 ADD SWAP2 DEC END POP WHILE NOT EZ DO BEGIN COPY DEC END WHILE HAVE2 DO BEGIN ADD END ## Примечание Ответ на пример из условия содержит две программы, которые вычисляют сумму чисел от 1 до $N$ для $N >= 0$.В стеке могут храниться числа произвольного размера. И ваша программа должна работать для $a_i$ произвольного размера.Намеренные попытки дестабилизировать работу проверяющей системы могут повлечь дисквалификацию команды. Жюри оставляет за собой право решать, что является невинной ошибкой, а что — намеренной попыткой дестабилизировать работу проверяющей системы. [samples]
PUSH 0 WHILE NZ POP ADD ENDWHILE
API Response (JSON)
{
  "problem": {
    "name": "L. Стековая машина",
    "description": {
      "content": "Дано $0 <= N <= 100$ целых неотрицательных чисел, выведите их сумму. Эх, как было бы хорошо, если бы вам нужно было написать программу для решения такой задачи на C++ или Python... У вас есть машина",
      "description_type": "Markdown"
    },
    "platform": "Codeforces",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "CF10259L"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "Дано $0 <= N <= 100$ целых неотрицательных чисел, выведите их сумму.\n\nЭх, как было бы хорошо, если бы вам нужно было написать программу для решения такой задачи на C++ или Python...\n\nУ вас есть машина...",
      "is_translate": false,
      "language": "English"
    },
    {
      "statement_type": "Markdown",
      "content": "PUSH 0  \nWHILE NZ  \n  POP  \n  ADD  \nENDWHILE...",
      "is_translate": false,
      "language": "Formal"
    }
  ]
}
Full JSON Raw Segments