# Solving Leetcode Interviews in Seconds with AI: Find the Punishment Number of an Integer


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "2698" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> Given a positive integer n, return the punishment number of n. The punishment number of n is defined as the sum of the squares of all integers i such that:  1 <= i <= n The decimal representation of i * i can be partitioned into contiguous substrings such that the sum of the integer values of these substrings equals i.    Example 1:  Input: n = 10 Output: 182 Explanation: There are exactly 3 integers i in the range [1, 10] that satisfy the conditions in the statement: - 1 since 1 * 1 = 1 - 9 since 9 * 9 = 81 and 81 can be partitioned into 8 and 1 with a sum equal to 8 + 1 == 9. - 10 since 10 * 10 = 100 and 100 can be partitioned into 10 and 0 with a sum equal to 10 + 0 == 10. Hence, the punishment number of 10 is 1 + 81 + 100 = 182  Example 2:  Input: n = 37 Output: 1478 Explanation: There are exactly 4 integers i in the range [1, 37] that satisfy the conditions in the statement: - 1 since 1 * 1 = 1.  - 9 since 9 * 9 = 81 and 81 can be partitioned into 8 + 1.  - 10 since 10 * 10 = 100 and 100 can be partitioned into 10 + 0.  - 36 since 36 * 36 = 1296 and 1296 can be partitioned into 1 + 29 + 6. Hence, the punishment number of 37 is 1 + 81 + 100 + 1296 = 1478    Constraints:  1 <= n <= 1000  

	# Explanation
	Here's a breakdown of the solution:

*   **Iterate and Check:** Iterate through numbers from 1 to `n`. For each number `i`, calculate its square (`i * i`).
*   **Partitioning Check:** Implement a recursive function to check if the square can be partitioned into contiguous substrings whose sum equals `i`.
*   **Summation:** If the partitioning is possible, add the square of `i` to the running sum (punishment number).

*   **Runtime & Storage Complexity:** The runtime complexity is O(n * 4<sup>k</sup>) where k is the number of digits of n<sup>2</sup>. The storage complexity is O(k), due to the depth of the recursion stack.

	
	# Code
	```python
	def punishment_number(n: int) -> int:
    """
    Calculates the punishment number of n.

    Args:
        n: A positive integer.

    Returns:
        The punishment number of n.
    """

    def check_partitioning(square_str: str, target: int, current_sum: int) -> bool:
        """
        Recursively checks if the square string can be partitioned into substrings
        whose sum equals the target.

        Args:
            square_str: The string representation of the square.
            target: The target sum (the original number).
            current_sum: The current sum of the partitioned substrings.

        Returns:
            True if partitioning is possible, False otherwise.
        """
        if not square_str:
            return current_sum == target

        for i in range(1, len(square_str) + 1):
            num = int(square_str[:i])
            if check_partitioning(square_str[i:], target, current_sum + num):
                return True

        return False

    punishment_sum = 0
    for i in range(1, n + 1):
        square = i * i
        square_str = str(square)
        if check_partitioning(square_str, i, 0):
            punishment_sum += square

    return punishment_sum
	```
			
