Carol Number

Last Updated : 16 Aug, 2026

A Carol number is an integer of the form: 4n - 2(n+1) - 1. It can also be written as: (2n - 1)2 - 2.

Interesting Property: For n > 2, its binary representation contains n-2 consecutive 1s, followed by a single 0, and then n+1 consecutive 1s. For example, n = 4 gives 223, whose binary representation is 11011111 (11 0 11111). The first few Carol numbers are -1, 7, 47, 223, 959, ....

A Carol number is defined as 4n - 2(n+1) - 1, equivalently (2n - 1)2 - 2. Given a number n, find the n'th Carol number. The first few Carol numbers are:  -1, 7, 47, 223, 959, ...

Note: The answer is guaranteed to fit in a 32-bit signed integer.

Examples:

Input: n = 2
Output: 7
Explanation: 2nd Carol Number = 4² − 2³ − 1 = 16 − 8 − 1 = 7.

Input: n = 4
Output: 223
Explanation: 4th Carol Number = 44 − 25 − 1 = 256 − 32 − 1 = 223.

Try It Yourself
redirect icon

Using the Given Formula - O(1) Time and O(1) Space

The idea is to directly use the definition of the Carol number, 4n - 2n + 1 - 1. We calculate the two powers and subtract them according to the formula.

Working of Approach:

  • Calculate 4n using pow(4, n).
  • Calculate 2n+1 using pow(2, n + 1).
  • Subtract 2n+1 and 1 from 4n.
  • Return the calculated Carol number.
C++
#include <cmath>
#include <iostream>
using namespace std;

int nthCarol(int n)
{
    // Calculate 4^n.
    int first = pow(4, n);

    // Calculate 2^(n + 1).
    int second = pow(2, n + 1);

    // Calculate the nth Carol number.
    int res = first - second - 1;

    // Return the result.
    return res;
}

int main()
{

    int n = 4;

    cout << nthCarol(n);

    return 0;
}
Java
import java.lang.Math;

public class GFG {
    // Function to calculate the nth Carol number.
    public static int nthCarol(int n)
    {
        // Calculate 4^n.
        int first = (int)Math.pow(4, n);

        // Calculate 2^(n + 1).
        int second = (int)Math.pow(2, n + 1);

        // Calculate the nth Carol number.
        int res = first - second - 1;

        // Return the result.
        return res;
    }

    public static void main(String[] args)
    {
        int n = 4;

        System.out.println(nthCarol(n));
    }
}
Python
import math

# Function to calculate the nth Carol number.
def nthCarol(n):
    # Calculate 4^n.
    first = pow(4, n)

    # Calculate 2^(n + 1).
    second = pow(2, n + 1)

    # Calculate the nth Carol number.
    res = first - second - 1

    # Return the result.
    return res


if __name__ == '__main__':
    n = 4

    print(nthCarol(n))
C#
using System;

class GFG {
    // Function to calculate the nth Carol number.
    static int nthCarol(int n)
    {
        // Calculate 4^n.
        int first = (int)Math.Pow(4, n);

        // Calculate 2^(n + 1).
        int second = (int)Math.Pow(2, n + 1);

        // Calculate the nth Carol number.
        int res = first - second - 1;

        // Return the result.
        return res;
    }

    static void Main()
    {
        int n = 4;

        Console.WriteLine(nthCarol(n));
    }
}
JavaScript
// Function to calculate the nth Carol number.
function nthCarol(n)
{
    // Calculate 4^n.
    let first = Math.pow(4, n);

    // Calculate 2^(n + 1).
    let second = Math.pow(2, n + 1);

    // Calculate the nth Carol number.
    let res = first - second - 1;

    // Return the result.
    return res;
}

// Driver Code
let n = 4;
console.log(nthCarol(n));

Output
223

Using Equivalent Formula - O(1) Time and O(1) Space

The idea is to use the equivalent formula of the Carol number, (2n - 1)2 - 2. First, we calculate 2n-1, square it, and subtract 2 to get the answer.

Working of Approach:

  • Calculate 2n - 1 using pow(2, n) - 1.
  • Store this value in result.
  • Square result and subtract 2.
  • Store the answer in res.
  • Return res as the nth Carol number.

Let us understand with an example:
Input: n = 4

  • result = 2^4 - 1 = 16 - 1 = 15
  • res = result × result - 2 = 15 × 15 - 2 = 223
  • The function returns 223.
C++
#include <cmath>
#include <iostream>
using namespace std;

int nthCarol(int n)
{

    int res;

    // Calculating the result using the formula 2^n - 1
    int result = pow(2, n) - 1;

    // Calculating the Nth Carol number
    // using the formula result^2 - 2
    res = result * result - 2;

    // Returning the Nth Carol number
    return res;
}

int main()
{

    int n = 4;

    cout << nthCarol(n);

    return 0;
}
Java
import java.util.Scanner;

public class GFG {
    public static int nthCarol(int n)
    {
        int res;

        // Calculating the result using the formula 2^n - 1
        int result = (int)Math.pow(2, n) - 1;

        // Calculating the Nth Carol number
        // using the formula result^2 - 2
        res = result * result - 2;

        // Returning the Nth Carol number
        return res;
    }

    public static void main(String[] args)
    {
        int n = 4;
        System.out.println(nthCarol(n));
    }
}
Python
import math


def nthCarol(n):

    res = 0

    # Calculating the result using the formula 2^n - 1
    result = pow(2, n) - 1

    # Calculating the Nth Carol number
    # using the formula result^2 - 2
    res = result * result - 2

    # Returning the Nth Carol number
    return res


if __name__ == '__main__':
    n = 4

    print(nthCarol(n))
C#
using System;

class GFG {
    static int nthCarol(int n)
    {
        int res;

        // Calculating the result using the formula 2^n - 1
        int result = (int)Math.Pow(2, n) - 1;

        // Calculating the Nth Carol number
        // using the formula result^2 - 2
        res = result * result - 2;

        // Returning the Nth Carol number
        return res;
    }

    static void Main()
    {
        int n = 4;
        Console.WriteLine(nthCarol(n));
    }
}
JavaScript
function nthCarol(n)
{
    let res;

    // Calculating the result using the formula 2^n - 1
    let result = Math.pow(2, n) - 1;

    // Calculating the Nth Carol number
    // using the formula result^2 - 2
    res = result * result - 2;

    // Returning the Nth Carol number
    return res;
}

// Driver Code
let n = 4;
console.log(nthCarol(n));

Output
223
Comment