*Difficulty: Medium
Problem:
Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows:
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
It can be verified that the sum of the numbers on the diagonals is 101.
What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way?
How to solve:
I sat down and started analyzing the problem, after many tries, I figured out this solution:
We got 4 diagonals in total, 1 goes from 1 to 9, named sum1, 1 goes from 1 to 3, named sum2, 1 goes from 1 to 5, named sum 3, and one goes from 1 to 7, named sum 4 (4 different directions).
- The first four numbers on sum1 are 1,9,25,49
9-1 = 8 (base)
25-9 = 8*1 + base
49-25 = 8*2 + base
let i goes from 1 to n/2-1 (exclusive), n>=7, n is an odd number, cur1 is initialized with 9, base1 = 9-1 = 8, then sum1 will be calculated as
- The first four numbers on sum2 are 1,3,13,31
3-1 = 2 (base)
13-3 = 8*1 + base
31-3 = 8*2 + base
let i goes from 1 to n/2-1 (exclusive), n>= 7, n is an odd number, cur2 is initialized with 3, base2 = 3-1=2, then sum2 will be calculated as
- The first four numbers on sum3 are 1,5,17,37
5 – 1 = 4 (base)
17-5 = 8*1 + base
37-17 = 8*2 + base
let i goes from 1 to n/2-1 (exclusive), n >= 7, n is an odd number, cur3 is initialized with 5, base3 = 5-1=4, then sum3 will be calculated as
- Last but not least, the first four numbers on sum4 are 1,7,21,43
7-1 = 6 (base)
21-7 = 8*1+base
43-21 = 8*2+base
let i goes from 1 to n/2-1 (exclusive), n>=7, n is an odd number, cur4 is initialized with 7, base4 = 7-1=6, then sum4 will be calculated as
This is how you combine the 4 for-loop above:
There you go, if you reach here, means you’ve calculated the sum of all number (except 1) on all four diagonals. The last work you need to do is just adding sum1,sum2,sum3,sum4 and plus 1.
This way, you can calculate sum of all numbers on the diagonals in a spiral with any size >= 7. How about 1,3,5, sadly, you have to do it by yourself.
Solution took 0 ms with size = 1001
Jim 11:20 am on July 10, 2016 Permalink |
I’ve been surfing on-line greater than 3 hours nowadays, but I never found any interesting article like yours.
It is pretty value sufficient for me. In my view, if all web owners and bloggers made excellent content as you
probably did, the web might be much more helpful than ever before. http://www.yahoo.net
loctv 3:53 pm on July 10, 2016 Permalink |
Thank you for your compliment Jim.
It’s a great thing to hear people say that they like my posts, specifically, the content inside it.