Solution to Project Euler Problem 28: Number spiral diagonals - Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows: 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?
Updated: Aug. 15, 2022 — Training Time: 2 minutes
Overseen by: Archangel Macsika
All Training Resources
Scroll for more menu list
Topic: Project Euler Problem 28: Number spiral diagonals.
Difficulty: Easy.
Objective: 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?
Input: None.
Expected Output: 669171001.
Sikademy Solution in Java Programming Language
package sikademy;
/**
*
* @author Archangel Macsika
* Copyright (c) Sikademy. All rights reserved
*/
public class SikademyEulerSolution {
private static final int SIZE = 1001; // Must be odd
public String run() {
long sum = 1; // Special case for size 1
for (int n = 3; n <= SIZE; n += 2)
sum += 4 * n * n - 6 * (n - 1);
return Long.toString(sum);
}
public static void main(String[] args) {
SikademyEulerSolution solution = new SikademyEulerSolution();
System.out.println(solution.run());
}
}
Sikademy Solution in Python Programming Language
#
# @author Archangel Macsika
# Copyright (c) Sikademy. All rights reserved.
#
def compute():
SIZE = 1001 # Must be odd
ans = 1 # Special case for size 1
ans += sum(4 * i * i - 6 * (i - 1) for i in range(3, SIZE + 1, 2))
return str(ans)
if __name__ == "__main__":
print(compute())