되는대로 살자

[C언어 기출문제&풀이] Ant on a Chessboard 본문

2009~2014/C/C++

[C언어 기출문제&풀이] Ant on a Chessboard

malu 2010. 11. 8. 19:55

프로그램 명: chessboard
제한시간: 1 초

개미는 (1,1) 에서 시작하여 아래와 같은 모양(뱀 모양)으로 이동한다. (한 셀을 이동하는데 1 초 소요)

8 초 후는 (2,3) , 20 초 후는 (5,4) 위치에 있게 된다.

주어진 시간이 주어질 때 그 때의 위치를 구하는 것이다.

체스판의 크기는 무한하다.

입력

정수 N(1 <= N <= 2*10^9)이 입력으로 주어진다.

출력

각 입력데이터에 대해서 좌표 (x,y) 를 출력한다.

입출력 예

입력

8

출력 

2 3

입력 

20

출력 

5 4

입력

25

출력

1 5
출처: http://acm.uva.es/p/v101/10161.html
풀이 : 1부터 차근차근히 규칙이 찾아질 때 까지 n(x,y) 순으로 써본다. 
 
소스코드 : 
01#include <stdio.h>
02  
03int main()
04{
05    long n,count=0;
06    int i,j,chksqnce=0;
07    scanf("%d",&n);
08    for(i=1;i<=n/2;i++)
09    {
10        for(j=1;j<=i;j++)
11        {
12            count++;
13            if(count==n)
14            {
15                if(chksqnce%2==0) printf("%d %d",i,j);
16                else printf("%d %d",j,i);
17                return 0;
18            }
19        }
20        for(j=i-1;j>0;j--)
21        {
22            count++;
23            if(count==n)
24            {
25                if(chksqnce%2==0) printf("%d %d",j,i);
26                else printf("%d %d",i,j);
27                return 0;
28            }
29        }
30        chksqnce++;
31    }
32    return 0;
33}