時間限制 1000 ms ・ 記憶體限制 256 MB
題目描述
請依指定的存取運算式,從 JSON 資料中取出元素。此題使用的 JSON 類型如下:
- 數值:32 位元有號整數。
- 字串:以雙引號包住零個以上字元,不含跳脫字元。
- 布林值:true 或 false。
- 陣列:以方括號包住零個以上有序的值,各值可為任意上述或巢狀類型,值之間以逗號分隔。
- 物件:以大括號包住無序的鍵值對。鍵是互不重複的字串;鍵和值以冒號分隔,各對以逗號分隔。
運算式以 obj 表示整份資料,用 obj[索引值] 存取陣列元素,或 obj[鍵值] 存取物件的值,並可接續存取巢狀元素。官方範例以 [0] 存取陣列第一項。
輸入格式
第一行為 JSON 字串 s,長度小於 65525。第二行為存取運算式 o,長度同樣小於 65525。
輸出格式
輸出運算式所存取的元素在原輸入 JSON 中對應的文字片段,保留原有表示方式與物件鍵的順序,不重新排序或正規化。字串輸出包含雙引號。若運算式只有 obj,輸出整份輸入 JSON。
原題分組限制
25 分:只有單層物件結構;25 分:最多三層結構;50 分:無額外限制。
範例 1
輸入:
{"skps1450":"GG"}
obj["skps1450"]
輸出:
"GG"
範例 2
輸入:
{"Kirito":[{"Busna":"OAO"},"startburst"]}
obj["Kirito"][0]
輸出:
{"Busna":"OAO"}
範例 3
輸入:
87
obj
輸出:
87
原題疑義與審核備註
官方參考解答直接輸出原字串中所選元素的子字串,詳解也以更新字串起訖位置處理查詢,因此輸出方式已依補充來源明確化。官方原題仍未明定無效存取運算式(例如不存在的鍵或越界索引)的處理方式;此處不自行補上保證或錯誤輸出。
來源
TOI 2020 年 10 月練習賽潛力組,依官方 PDF 整理。
官方原題:https://tpmso.k12ea.gov.tw/toi/wp-content/uploads/question/202010/JSON.pdf
官方參考解答:https://tpmso.k12ea.gov.tw/toi/wp-content/uploads/question/202010/JSON.zip
官方詳解投影片:https://tpmso.k12ea.gov.tw/toi/wp-content/uploads/question/202010/JSON.odp
標籤:TOI 歷屆
範例測資
範例輸入 1
{"skps1450":"GG"}
obj["skps1450"]
範例輸出 1
"GG"
範例輸入 2
{"Kirito":[{"Busna":"OAO"},"startburst"]}
obj["Kirito"][0]
範例輸出 2
{"Busna":"OAO"}
範例輸入 3
87 obj
範例輸出 3
87
討論與題解
載入討論區…