A. long long

Codeforces
IDCF10126A
Time2000ms
Memory256MB
Difficulty
English · Original
Formal · Original
Вы наверняка знаете, что при решении задач (особенно на олимпиадах по программированию) нужно выбирать целочисленные типы данных с умом. Если используемый тип имеет слишком малый размер, при выполнении арифметических операций может произойти переполнение, и тогда результат вычислений окажется неверным. Макс решает задачу, в которой требуется определить произведение целых чисел A и B. Любимый язык Макса — C++, а в этом языке самым ёмким целочисленным типом является long long — на компьютере Макса это 64-битное целое со знаком. 1 бит отводится на хранение знака числа, остальные 63 — на хранение самого числа; таким образом, максимальное значение, которое может иметь переменная типа long long, равно (263 - 1). В своём решении Макс использовал long long везде, где только мог — для хранения чисел A, B и их произведения. Определите, действительно ли это поможет ему избежать переполнения. Ввод содержит целые числа A и B (0 ≤ A, B ≤ (263 - 1)). Выведите YES, если при вычислении произведения (A·B) произойдёт переполнение типа long long. В противном случае выведите NO. ## Входные Данные Ввод содержит целые числа A и B (0 ≤ A, B ≤ (263 - 1)). ## Выходные Данные Выведите YES, если при вычислении произведения (A·B) произойдёт переполнение типа long long. В противном случае выведите NO. ## Примеры Входные данные1000000000 1000000000Выходные данныеNOВходные данные10000000000 10000000000Выходные данныеYES [samples]
**Definitions** Let $ n \in \mathbb{Z}_{\geq 0} $ be the initial number of shares. Let $ m \in \mathbb{Z}_{\geq 1} $ be the number of time moments. Let $ A = (a_1, a_2, \dots, a_m) \in \mathbb{Z}_{\geq 1}^m $ be the agent buy prices. Let $ B = (b_1, b_2, \dots, b_m) \in \mathbb{Z}_{\geq 1}^m $ be the exchange buy prices. Let $ s_t \in \mathbb{Z}_{\geq 0} $ be the number of shares owned at time $ t \in \{0, 1, \dots, m\} $, with $ s_0 = n $. Let $ c_t \in \mathbb{Z}_{\geq 0} $ be the cash owned at time $ t $, with $ c_0 = 0 $. At each time $ t \in \{1, \dots, m\} $, one of three actions is taken: - **Sell (A)**: $ s_t = 0 $, $ c_t = c_{t-1} + s_{t-1} \cdot a_t $ - **Buy (B)**: $ s_t = s_{t-1} + \left\lfloor \frac{c_{t-1}}{b_t} \right\rfloor $, $ c_t = c_{t-1} \bmod b_t $ - **Hold (0)**: $ s_t = s_{t-1} $, $ c_t = c_{t-1} $ **Constraints** 1. $ 1 \leq n \leq 10^9 $, $ 1 \leq m \leq 5 \times 10^5 $ 2. $ 1 \leq a_j, b_j \leq 10^9 $ for all $ j \in \{1, \dots, m\} $ 3. $ s_t \leq 10^{18} $, $ c_t \leq 10^{18} $ for all $ t \in \{0, \dots, m\} $ **Objective** Maximize final cash: $$ \max c_m $$ and output a sequence $ x_1, x_2, \dots, x_m \in \{A, B, 0\} $ achieving this maximum.
API Response (JSON)
{
  "problem": {
    "name": "A. long long",
    "description": {
      "content": "Вы наверняка знаете, что при решении задач (особенно на олимпиадах по программированию) нужно выбирать целочисленные типы данных с умом. Если используемый тип имеет слишком малый размер, при выполнени",
      "description_type": "Markdown"
    },
    "platform": "Codeforces",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "CF10126A"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "Вы наверняка знаете, что при решении задач (особенно на олимпиадах по программированию) нужно выбирать целочисленные типы данных с умом. Если используемый тип имеет слишком малый размер, при выполнени...",
      "is_translate": false,
      "language": "English"
    },
    {
      "statement_type": "Markdown",
      "content": "**Definitions**  \nLet $ n \\in \\mathbb{Z}_{\\geq 0} $ be the initial number of shares.  \nLet $ m \\in \\mathbb{Z}_{\\geq 1} $ be the number of time moments.  \nLet $ A = (a_1, a_2, \\dots, a_m) \\in \\mathbb{Z...",
      "is_translate": false,
      "language": "Formal"
    }
  ]
}
Full JSON Raw Segments