Connection Status:
Competition Arena > SpiralNumbers
SRM 303 · 2006-05-18 · by Snail · Simple Math, Simple Search, Iteration
Class Name: SpiralNumbers
Return Type: String
Method Name: getPosition
Arg Types: (int)
Problem Statement

Problem Statement

Consider all positive integers written in the following manner (you can imagine an infinite spiral).
                 21  22  23  24  25  26
                 20   7   8   9  10 ...
                 19   6   1   2  11 ...
                 18   5   4   3  12 ...
                 17  16  15  14  13 ...
     
You task is to determine the position (row,column) of a given number N, assuming that the center (number 1) has position (0,0). Rows are numbered from top to bottom, columns are numbered from left to right (for example, number 3 is at (1,1)). Your method should return a string containing the position of N in form (R,C) where R is the row and C is the column. R and C must not contain any leading zeroes.

Constraints

  • N will be between 1 and 2,147,483,647, inclusive.
Examples
0)
2
Returns: "(0,1)"
1)
3
Returns: "(1,1)"
2)
7
Returns: "(-1,-1)"
3)
17
Returns: "(2,-2)"
4)
24
Returns: "(-2,1)"

Submissions are judged against all 97 archived test cases, of which 5 are shown here. Case numbers match the judge’s.

Coding Area

Language: C++17 · define a public class SpiralNumbers with a public method string getPosition(int N) · 97 test cases · 2 s / 256 MB per case

Submitting as anonymous