來源:牛客網
題目描述
牛客網專注於程序員的學習、成長及職位發展,連接C端程序員及B端招聘方,通過IT筆試面試題庫、在線社區、在線課程等提高候選人的求職效率,通過在線筆試、面試及其他工具提升企業的招聘效率。
團隊由來自Google、百度、阿里、網易等知名互聯網巨頭的熱血技術青年組成,用戶覆蓋全國2000多所高校的100W求職程序員及全部一線互聯網企業,並仍在高速增長中。
謹慎的ZiZi當然不會直接把密碼記錄在上面,而是把上面的字符串經過轉化後纔是真正的密碼。轉化的規則是把字符串以n行鋸齒形寫出來,然後再按從左到右,從上到下讀取,即爲真正的密碼。如ABABCADCE以3行寫出:
所以真正的密碼是ACEBBACAD。但是每一次都要寫出來就太麻煩了,您如果能幫他寫出一個轉換程序,他就送你一個氣球。
輸入描述:
第一行一個整數T,表示數據組數 對於每組數據,首先一個正整數n(n<=100,000),然後下一行爲一個字符串,字符串長度len<=100,000。
輸出描述:
對於每組數據,輸出一個字符串,代表真正的密碼。
表示寫了兩次了,但是一直保存不上,沒有心情繼續寫一遍了
#include <iostream>
using namespace std;
int main()
{
int T,n,len;
string *res;
string str;
cin>>T;
while(T--)
{
cin>>n;
cin>>str;
len = str.length();
res = new string[n];
int pos = 0;
bool flag = true;
while(len != pos)
{
if(flag)
{
for(int i = 0; i < n; i++)
{
res[i].append(1,str[pos++]);
if(len == pos)
break;
}
flag = false;
}
else
{
for(int i = n-1; i>= 0; i--)
{
if(i == n-1|| i == 0)
{
res[i].append(1,' ');
continue;
}
res[i].append(1,str[pos++]);
if(len == pos)
break;
}
flag = true;
}
}
for(int i = 0; i < n; i++)
{
len = res[i].length();
for(int j = 0; j < len; j++)
{
if(res[i][j] != ' ')
{
cout << res[i][j];
}
}
}
cout << endl;
}
return 0;
}