ÇÁ·Î±×·¡¹Ö

 3198, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   bys503
   ÇÁ·Î±×·¡¹Ö Áú¹®

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2854 [º¹»ç]


¹®Á¦ ¸µÅ©´Â ¾Æ·¡¿¡ ÀÖ½À´Ï´Ù.
http://www.nia.or.kr/koi/F04000000000/F04040000000Q.asp?intExBaSEQ=43&strExBaPart=20&strExBaGrad=20&strExBaYear=2000&ExPmSEQ=384

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#define randomize() srand((unsigned)time(NULL))
#define random(n) (rand()%(n))

ÀÏ´Ü Á¦°¡ ÇÁ·Î±×·¡¹Ö ÇØ ³õÀº Äڵ带 ¹Ø¿¡ Àû¾î º¾´Ï´Ù. ±×·±µ¥ °á°ú°¡ Á¦°¡ ¿øÇÏ´Â ´ë·Î ³ª¿ÀÁö ¾Ê¾Æ¼­ ¸»ÀÌÁÒ.
¾îµð°¡ À߸øµÈ ºÎºÐÀÎÁö ¾Ë·Á ÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù.
void main()
{
        FILE *in=fopen("input.txt","r");
        FILE *out=fopen("output.txt","w");
        
        int howmany_number,number_final,room[100],l,i,n,func_number[100],k,count,pure[100];
        number_final=0;
        howmany_number=0;

        fscanf(in,"%d",&howmany_number);
        fscanf(in,"%d",&number_final);
        for(i=1;i<=howmany_number;i++)
        {
                pure[i]=0;
                room[i]=0;
                func_number[i]=0;
                fscanf(in,"%d",&pure[i]);
        }


        randomize();
        k=howmany_number;
        l=0;
        l++;

        for(i=1;i<=howmany_number;i++)
        {
                room[i]=pure[i];
        }

        count=0;
        while(1)
        {
                n=random(k);
                if(n==0) n++;
                func_number[l]=n;

                if(room[n]>=room[n+1]) room[n]=room[n]-room[n+1];
                else room[n]=room[n+1]-room[n];
                room[n+1]=0;

                if(n+1!=k)
                {
                for(i=n+1;i<k;i++)
                {
                        room[i]=room[i+1];
                }
                }

                k--;
                l++;
                if(k==1)
                {
                        if(room[1]==number_final) break;
                        else
                        {
                                k=howmany_number;
                                l=1;
                                for(i=1;i<=howmany_number;i++)
                                {
                                        func_number[i]=0;
                                        room[i]=pure[i];
                                }

                        }
                }
                count++;
                if(count>=100)
                {
                        fprintf(out,"%d",0);
                        break;
                }
        }

        if(count<100)
        {
        for(i=1;i<howmany_number;i++)
        {
                fprintf(out,"%d",func_number[i]);
        }
        }

        fclose(in);
        fclose(out);
}


  Hit : 4191     Date : 2011/01/17 12:33