a328. TOI 2022/12 潛力組:數字遊戲

中等TOI 歷屆

時間限制 1000 ms ・ 記憶體限制 256 MB

題目描述

場上從左至右排列 N 個數字,依序執行 M 次行動。行動分為三種:

  • action1(l, r):取得第 l 至第 r 個數字的總和,作為本次獲得的積分。
  • action2(l, r):將第 l 至第 r 個數字各自的最後一位數拿掉。依官方參考程式,此操作是把各數除以 10,捨去小數部分並向 0 截斷;因此負數保留商的符號,絕對值小於 10 的數以及 0 都會變成 0。
  • action3(l, x):將第 l 個數字改成 x。

請依照行動順序更新場上的數字,並輸出每一次 action1 當次獲得的積分,不需要輸出玩家的累計分數。

輸入格式

第一行為整數 N、M,1 ≤ N, M ≤ 5×10^5。

第二行為 N 個數字,表示初始排列。

接著 M 行,每行三個整數 T、a、b,1 ≤ T ≤ 3,表示執行 actionT(a, b)。

  • T = 1 或 2 時,1 ≤ a ≤ b ≤ N。
  • T = 3 時,1 ≤ a ≤ N,b 為要設定的數字。
  • 所有輸入數字都在 32 位元有號整數範圍內。

原題分組限制:10 分:N, M ≤ 10^3。20 分:T = 1。40 分:T ≠ 2。30 分:無額外限制。

輸出格式

每遇到 T = 1 的行動,輸出一行整數,表示這一次行動取得的積分。

範例 1

輸入:

6 4
32 41 102 888 99 65
1 3 5
2 2 4
3 4 1024
1 1 6

輸出:

1089
1234

官方補充來源說明

原題 PDF 沒有明寫負數、單位數與 0 移除末位的規則。官方參考程式 Numbers.cpp 的 RangeUpdate 使用有號整數除以 10,官方詳解第 14 頁亦呈現同一段程式;第 11 頁說明任意 32 位元有號整數經過 10 次此操作會變成 0。本稿據此補足向 0 截斷的規則,不另外限制初值或更新值必須非負。

來源

TOI 2022 年 12 月歷屆題〈數字遊戲〉,依官方 PDF 重新整理。

官方原題:https://tpmso.k12ea.gov.tw/toi/wp-content/uploads/question/202212/Numbers.pdf

標籤:TOI 歷屆

官方參考程式:https://tpmso.k12ea.gov.tw/toi/wp-content/uploads/question/202212/Numbers.zip

官方詳解:https://tpmso.k12ea.gov.tw/toi/wp-content/uploads/question/202212/Numbers.odp

範例測資

範例輸入 1

6 4
32 41 102 888 99 65
1 3 5
2 2 4
3 4 1024
1 1 6

範例輸出 1

1089
1234
請先登入後再提交程式碼

討論與題解

載入討論區…

更多