• Problem F


    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)

    Total Submission(s) : 84   Accepted Submission(s) : 25
    Problem Description
    某部队进行新兵队列训练,将新兵从一開始按顺序依次编号,并排成一行横队。训练的规则例如以下:从头開始一至二报数。凡报到二的出列,剩下的向小序号方向靠拢,再从头開始进行一至三报数。凡报到三的出列,剩下的向小序号方向靠拢。继续从头開始进行一至二报数。。

    。,以后从头開始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。

     

    Input
    本题有多个測试数据组。第一行为组数N,接着为N行新兵人数。新兵人数不超过5000。

     

    Output
    共同拥有N行,分别相应输入的新兵人数,每行输出剩下的新兵最初的编号。编号之间有一个空格。

     

    Sample Input
    2 20 40
     

    Sample Output
    1 7 19
    1 19 37



    #include<stdio.h>
    int w,a;
    int x[10000],s[10000];
    
    int main()
    {
    	int i,j,l,k,c,b,n,m;
    	scanf("%d",&n);
    	while(n--)
    	{
    		scanf("%d",&a);
    		for(i=1;i<=a;i++)
    		x[i]=i;
    		w=1;
    		while(a>3)
    	{
    	   k=a;
    	  if(w%2!=0)
    	  {
    	    	j=1;//刚開始这个地方出错了错写成j=0;
    	    	for(i=1;i<=k;i++)
    		  {
    			if(i%2!=0)
    			{
    				s[j]=x[i];
    				x[j]=s[j];
    				j++;
    		   	}
    		   	else a--;
    		   	
    		  }
    	}
    		else{
    			j=1;//<span style="font-family: 'Courier New', Courier, monospace;">刚開始这个地方出错了错写成j=0;</span>
    			for(i=1;i<=k;i++)
    		{
    			if(i%3!=0)
    			{
    				x[j]=x[i];
    				j++;
    			}
    			else a--;
    		}
    		}
    		w++;
    	}
    		for(i=1;i<=a;i++)
    		printf("%d ",x[i]);
    		printf("
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    usaco-3.2-butter-passed
    usaco-3.2-msquare-pass
    usaco-3.2-ratios-pass
    usaco-3.2-spin-pass
    usaco-3.2-kimbits-pass
    usaco-3.2-fact4-pass
    usaco-3.1-stamps-pass
    usaco-3.1-contact-pass
    git操作
    spring 用到的设计模式
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7245814.html
Copyright © 2020-2023  润新知