원탁 문제 HDU 4841 PE...


원탁 문제
Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 466    Accepted Submission(s): 157
Problem Description
원탁 위 에 2n 명 이 둘 러 앉 아 있다.그 중 n 명 은 좋 은 사람 이 고, 다른 n 명 은 나 쁜 사람 이다.첫 번 째 사람 부터 세 어 보고 m 번 째 사람 을 세면 즉시 그 사람 을 처형 한다.그리고 처형 당 한 사람 부터 세 어 보고 세 어 본 m 번 째 사람 을 처형 합 니 다.....................................................................n 명 을 처형 한 후에 원탁 에 둘 러 앉 은 나머지 n 명 을 모두 좋 은 사람 으로 만 들 수 있 는 좋 은 사람과 나 쁜 사람의 자 리 를 어떻게 마련 해 야 하 는 지 물 어보 세 요.
 
Input
여러 그룹의 데이터, 각 그룹의 데이터 입력: 좋 은 사람과 나 쁜 사람의 수 n (< = 32767), 보폭 m (< = 32767);
 
Output
각 그룹의 데이터 에 대해 대문자 2n 개 를 출력 하고 'G' 는 좋 은 사람 을, 'B' 는 나 쁜 사람 을, 50 자 모 는 한 줄 로 공백 문자 가 나타 나 면 안 된다.인접 한 데이터 사이 에 빈 줄 이 하나 남아 있다.
 
Sample Input

   
   
   
   
2 3 2 4

 
Sample Output

   
   
   
   
GBBG BGGB
, 。 。
, PE。 50
, 。
32767, , 32767.
。。。。。 。。。。 ??
#include<stdio.h>
#include <string.h>

int n,m,i,j,k,flag = 0;
int table[100000];
char place[100000];

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        memset(table,0,sizeof(table));
        i = k = 0;
        j = n;
        while(n)
        {
            if(table[i] == 0) k++;
            if(k == m)
            {
                table[i] = 1;
                k = 0;
                n--;
            }
            i++;
            if(i == 2 * j)i = 0;
        }
        for(i = 0; i < 2*j; i++)
        {
            if(table[i]) printf("B");
            else printf("G");
            flag = 0;
            if((i+1) % 50 == 0)  {printf("
"); flag = 1;} } if(!flag)printf("
"); printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기