密碼

鏈接:https://www.nowcoder.com/acm/contest/90/K
來源:牛客網

題目描述

ZiZi登錄各種賬號的時候,總是會忘記密碼,所以他把密碼都記錄在一個記事本上。其中第一個密碼就是牛客網的密碼。

牛客網專注於程序員的學習、成長及職位發展,連接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;
}


發佈了35 篇原創文章 · 獲贊 14 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章