Puzzle | Program to find number of squares in a chessboard - GeeksforGeeks

04 Jan, 2022
Puzzle: You are provided with a chessboard and are asked to find the number of squares in it. A chessboard is a board with 8 x 8 grids in it as represented below. 
Solution: Looking closely at the chessboard we can see that in addition to the 1 x 1 square, there can be a combination of 2 x 2, 3 x 3, 4 x 4, 5 x 5, 6 x 6, 7 x 7, and 8 x 8 squares too. To get the total number of squares we need to find all the squares formed. 
1 x 1: 8 * 8 = 64 squares.
2 x 2: 7 * 7 = 49 squares.
3 x 3: 6 * 6 = 36 squares.
4 x 4: 5 * 5 = 25 squares.
5 x 5: 4 * 4 = 16 squares.
6 x 6: 3 * 3 = 9 squares.
7 x 7: 2 * 2 = 4 squares.
8 x 8: 1 * 1 = 1 square.
Therefore, we have in all = 64 + 49 + 36 + 25 + 16 + 9 + 4 + 1 = 204 squares in a chessboard. 
General ProcessGiven an n x n grid, count squares in it. 
Examples: 
Input: n = 2
Output: 5 (4 squares of 1 unit + 1 square of 2 units)

Input: n = 3
Output: 14 (9 squares of 1 unit + 4 square of 2 units 
                                + 1 square of 1 unit) 
For a grid of size n*n the total number of squares formed are: 
1^2 + 2^2 + 3^2 + ... + n^2 = n(n+1)(2n+1) / 6 
Below is the implementation of the above formula. Since the value of n*(n+1)*(2n+1) can cause overflow for large values of n, below are some interesting tricks used in the program. 
long int is used in return.n * (n + 1) / 2 is evaluated first as the value n*(n+1) will always be a multiple of 2.
long int is used in return.
n * (n + 1) / 2 is evaluated first as the value n*(n+1) will always be a multiple of 2.
Note that overflow may still happen, but the above tricks just reduce the chances of an overflow.  
C++
Java
Python3
C#
PHP
Javascript
// C++  find number of squares in a// chessboard#include <bits/stdc++.h>using namespace std; // Function to return count of squares;long long int countSquares(int n){  return (n * (n + 1) / 2) * (2 * n + 1) / 3;} // Driver Codeint main(){   int n = 4;  cout << countSquares(n);  return 0;} //vermay87    `
// Java  find number of squares in a// chessboard  class GFG{    // Function to return count of squares;    static int countSquares(int n)    {        // A better way to write n*(n+1)*(2n+1)/6        return (n * (n + 1) / 2) * (2 * n + 1) / 3;    }         // Driver code    public static void main (String[] args)    {        int n = 3;        System.out.println("Count of squares is "                           +countSquares(n));    }} // This code is contributed by Anant Agarwal.
# python code to find number# of squares in a chessboard # Function to return count# of squares;def countSquares(n):         # better way to write    # n*(n+1)*(2n+1)/6    return ((n * (n + 1) / 2)           * (2 * n + 1) / 3)     # Driver coden = 4print("Count of squares is ",              countSquares(n)) # This code is contributed by sam007.
// C# find number of squares in a// chessboardusing System; public class GFG {         static int countSquares(int n)    {        // A better way to write        // n*(n+1)*(2n+1)/6        return (n * (n + 1) / 2)                * (2 * n + 1) / 3;    }         // Driver code    public static void Main ()    {        int n = 4;        Console.WriteLine("Count of"                     + "squares is "                 + countSquares(n));    }} // This code is contributed by Sam007.
<?php// PHP program to find number// of squares in a chessboard // Function to return// count of squares;function countSquares($n){    // A better way to    // write n*(n+1)*(2n+1)/6    return ($n * ($n + 1) / 2) *               (2 * $n + 1) / 3;} // Driver Code$n = 4;echo "Count of squares is " ,            countSquares($n); // This code is contributed// by nitin mittal.?>
<script> // Java  find number of squares in a// chessboard // Function to return count of squares;function countSquares( n){    // A better way to write n*(n+1)*(2n+1)/6    return (n * (n + 1) / 2) * (2*n + 1) / 3;} // Driver Code let n = 4;document.write("Count of squares is " + countSquares(n)); </script>
Output:  
Count of squares is 30
This article is contributed by Rishabh. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
Sam007
nitin mittal
Chinmoy Lenka
jana_sayantan
vermay87
Goldman Sachs
MAQ Software
number-theory
permutation
Articles
Mathematical
Goldman Sachs
MAQ Software
number-theory
Mathematical
permutation
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Service-Oriented Architecture
Const keyword in C++
Amazon’s most frequently asked interview questions | Set 2
What's the difference between Scripting and Programming Languages?
Must Do Questions for Companies like TCS, CTS, HCL, IBM ...
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7