c381 - 聖經密碼
題目描述
題目要求將給定的 n 個單字連接成一個長字串,然後根據 m 個給定的索引,從長字串中提取對應位置的字元,組成一個新的單字並輸出。
解題思路
本題的核心思路是將輸入的單字逐一讀取並連接成一個長字串。然後,根據題目提供的索引,從長字串中提取字元。由於題目保證索引有效,因此可以直接使用索引提取字元。使用 scanf 讀取 n 和 m 的值,並在 n 和 m 都為 0 時結束程式。使用迴圈讀取單字並連接成一個字串,再使用迴圈讀取索引並提取字元。
複雜度分析
- 時間複雜度: O(N + M),其中 N 是單字總長度,M 是索引數量。連接字串需要 O(N) 的時間,提取字元需要 O(M) 的時間。
- 空間複雜度: O(N),主要用於儲存連接後的長字串。
程式碼
#include <iostream>
#include <string>
int main(){
std::string a,b;
int n,m;
while(scanf("%d%d",&n,&m)>0){
for(;n>0;n--){
std::cin >> a;
b+=a;
}
a.clear();
for(;m>0;m--){
scanf("%d",&n);
printf("%c",b[n-1]);
}
b.clear();
printf("\n");
}
}