題目連結:
題目大意:
第一列給定一正整數 N (N ≦ 50, 000, 000),代表第二列的字串之長度,而第二列即為其內容。每個字元都是以 ASCII 第 33 ~ 126 個的非空白字元組成。
接著有若干列,每列給定兩正整數 L 、 R (1 ≦ L ≦ R ≦ N)。請輸出第二列之字串的第 L 個字元(含)~第 R 個字元(含)。(字串的開頭為第「1」個字元)
記憶體限制為32MB。
18
asworlddkjhellodlk
11 15
3 7
跟
昨天的題目類似,都是要直接操作 cin 的輸入串流。
也是先用 pubseekpos() 函式讓 cin 的讀取指標指到第二列的開頭,然後再移動到第L個字元。接著跟昨天的策略一樣用 sgetn() 去抓 L ~ R 之間的字元,並輸出。
但是要記得在輸入 L 、 R 兩個變數之後,要記錄當下 cin 的讀取指標在的位置,方便輸出完 L ~ R 的字元後能夠回來到現在的位置。才不會重複讀到相同的 L 、 R 值。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。