ACM 之 A - 士兵隊(duì)列訓(xùn)練問(wèn)題(更新版)

Description

某部隊(duì)進(jìn)行新兵隊(duì)列訓(xùn)練,將新兵從一開始按順序依次編號(hào),并排成一行橫隊(duì),訓(xùn)練的規(guī)則如下:從頭開始一至二報(bào)數(shù),凡報(bào)到二的出列,剩下的向小序號(hào)方向靠攏,再?gòu)念^開始進(jìn)行一至三報(bào)數(shù),凡報(bào)到三的出列,剩下的向小序號(hào)方向靠攏,繼續(xù)從頭開始進(jìn)行一至二報(bào)數(shù)。。。,以后從頭開始輪流進(jìn)行一至二報(bào)數(shù)、一至三報(bào)數(shù)直到剩下的人數(shù)不超過(guò)三人為止。

Input

本題有多個(gè)測(cè)試數(shù)據(jù)組,第一行為組數(shù)N,接著為N行新兵人數(shù),新兵人數(shù)不超過(guò)5000。

Output

共有N行,分別對(duì)應(yīng)輸入的新兵人數(shù),每行輸出剩下的新兵最初的編號(hào),編號(hào)之間有一個(gè)空格。

Sample Input

2
20
40

Sample Output

1 7 19
1 19 37

理解:

這道題整體意思就是說(shuō)一定數(shù)量的士兵分別以1-2和1-3報(bào)數(shù) , 報(bào)到二的出列 , 然后下一輪報(bào)道三的出列 . 這樣一直循環(huán)到人數(shù)小于等于三時(shí)再把這三個(gè)人在第一輪所編排到的號(hào)碼輸出(所站位置)

做法

可以用一個(gè)數(shù)組 , 從1-n依次賦值,即為他們最后要輸出的編號(hào) , 然后 再編寫1-2和1-3的循環(huán)體,判斷條件可以寫成if(n>3) ;
做了更新,上一個(gè)版本的代碼實(shí)在是看不下去,太長(zhǎng),而且執(zhí)行效率也不高,更可怕的是我自己都看不懂自己寫的代碼了。所以學(xué)了這么久之后換一個(gè)更容易懂得。
用隊(duì)列。~ ~

代碼部分

#include <cstdio>
#include <queue>
using namespace std;
int a[50001],f,t,n,ff;
queue<int>q;
void sortt(int x){
    int s=q.size();
    for(int i=1;i<=s;i++){
        if(i%x==0)q.pop();
        else{
                q.push(q.front());
                q.pop();
            }
    }
}
int main(){
    while(!q.empty())q.pop();
    while(scanf("%d",&t)!=EOF){
        while(t--){
            scanf("%d",&n);
            for(int i=1;i<=n;i++)q.push(i);
            f=1;
            while(q.size()>3){
                if(f==1){
                    f=0;
                    sortt(2);
                    continue;
                }
                if(f==0){
                    f=1;
                    sortt(3);
                    continue;
                }
            }ff=0;
            while(!q.empty()){
                if(ff==1){
                    printf(" %d",q.front());
                    q.pop();
                }
                else{
                    ff=1;
                    printf("%d",q.front());
                    q.pop();
                }
            }
            printf("\n");
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 百度百科: 約瑟夫環(huán)(約瑟夫問(wèn)題)是一個(gè)數(shù)學(xué)的應(yīng)用問(wèn)題:已知n個(gè)人(以編號(hào)1,2,3...n分別表示)圍坐在一張圓...
    KPort閱讀 3,993評(píng)論 0 4
  • 年輕的女孩兒總是對(duì)愛(ài)情抱有甜蜜的幻想,她第一眼見(jiàn)到他時(shí),便預(yù)知,他會(huì)是她的故事。 他的眉眼,他的善良,他的幽默感,...
    白鹿小姐R閱讀 368評(píng)論 0 3
  • 【作者】郭興平 【派別】文魁派 【導(dǎo)師】袁文魁 【導(dǎo)圖講解】 中心圖是摘自《正義聯(lián)盟》漫畫宣傳圖片,人物全部是聯(lián)盟...
    郭興平閱讀 465評(píng)論 0 0
  • 文/我是Lucy 圖/Martika 1 我和T相識(shí)在大學(xué),初見(jiàn)她時(shí), 便覺(jué)得這個(gè)女生不一般,渾身上下 除了透著一...
    我是Lucy閱讀 533評(píng)論 0 1
  • 始終覺(jué)得父親骨子里有江湖氣息,內(nèi)心有赤熱的傷。嚼酒如命的他有偽裝的堅(jiān)強(qiáng),有真實(shí)的脆弱。人生幾十載,時(shí)而勤奮,時(shí)而堅(jiān)...
    米策閱讀 323評(píng)論 6 5

友情鏈接更多精彩內(nèi)容