Ultraviolet A 10161 ant on a chessboard

Source: Internet
Author: User
Tags define local

A mathematical question, look for patterns.

First, you must determine the number at the nth layer, for example, at the nth layer. Then, judge the relationship between (N * n-n + 1) (its coordinates are (n, n.

Pay attention to the parity of N.



 

Problem A. Ant on a chessboard

 

Background

One day, an ant called Alice came to an M * m chessboard. she wanted to go around all the grids. so she began to walk along the chessboard according to this way: (you can assume that her speed is one grid per second)

At the first second, Alice was standing at (1, 1 ). firstly she went up for a grid, then a grid to the right, a grid downward. after that, she went a grid to the right, then two grids upward, and then two grids to the left... In a word, the path was like a snake.

For example, her first 25 seconds went like this:

(The numbers in the grids stands for the time when she went into the grids)

 

25

24

23

22

21

10

11

12

13

20

9

8

7

14

19

2

3

6

15

18

1

4

5

16

17

5

 

4

3

2

 

1

1 2 3 4 5

At the 8th second, she was at (2, 3), and at 20th second, she was at (5, 4 ).

Your task is to decide where she was at a given time.

(You can assume that M is large enough)

 

 

Input

Input file will contain several lines, and each line contains a number N (1 <= n <= 2*10 ^ 9), which stands for the time. the file will be ended with a line that contains a number 0.

 

 

Output

For each input situation you shocould print a line with two numbers (x, y), the column and the row number, there must be only a space between them.

 

 

Sample Input

8

20

25

0

 

 

Sample output

2 3

5 4

1 5

 

AC code:

 1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <cmath> 6 using namespace std; 7  8 int main(void) 9 {10     #ifdef LOCAL11         freopen("10161in.txt", "r", stdin);12     #endif13 14     int N;15     while(scanf("%d", &N) == 1 && N)16     {17         int n = (int)ceil(sqrt(N));18         int x, y;19         if(n & 1 == 1)20         {21             if(N < n * n - n + 1)22             {23                 x = n;24                 y = N - (n - 1) * (n - 1);25             }26             else27             {28                 y = n;29                 x = n * n - N + 1;30             }31         }32         else33         {34             if(N < n * n - n + 1)35             {36                 y = n;37                 x = N - (n - 1) * (n - 1);38             }39             else40             {41                 x = n;42                 y = n * n - N + 1;43             }44         }45 46         cout << x << " " << y << endl;47     }48     return 0;49 }
Code Jun

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.