切換
舊版
前往
大廳
主題

ZeroJudge - c631: 記憶力試驗 解題心得

Not In My Back Yard | 2019-03-06 17:58:38 | 巴幣 0 | 人氣 212

題目連結:


題目大意:
第一列給定一正整數 N (N ≦ 50, 000, 000),代表第二列的字串之長度,而第二列即為其內容。每個字元都是以 ASCII 第 33 ~ 126 個的非空白字元組成。

接著有若干列,每列給定兩正整數 L 、 R (1 ≦ L ≦ R ≦ N)。請輸出第二列之字串的第 L 個字元(含)~第 R 個字元(含)。(字串的開頭為第「1」個字元)

記憶體限制為32MB



範例輸入:
18
asworlddkjhellodlk
11 15
3 7


範例輸出:
hello
world


解題思維:
昨天的題目類似,都是要直接操作 cin 的輸入串流。

也是先用 pubseekpos() 函式讓 cin 的讀取指標指到第二列的開頭,然後再移動到第L個字元。接著跟昨天的策略一樣用 sgetn() 去抓 L ~ R 之間的字元,並輸出。

但是要記得在輸入 L 、 R 兩個變數之後,要記錄當下 cin 的讀取指標在的位置,方便輸出完 L ~ R 的字元後能夠回來到現在的位置。才不會重複讀到相同的 L 、 R 值。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作