SpiralNumbers
SRM 303 · 2006-05-18 · by Snail
SRM 303 · 2006-05-18 · by Snail · Simple Math, Simple Search, Iteration
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