• + 0 comments

    C#

    void kaprekarNumbers(int p, int q)
    {
        var hasModifiedKaprekarNum = false;
    
        while (p <= q)
        {
            var squareNumStr = ((long)Math.Pow(p, 2)).ToString();
    
            var rightStrCnt = squareNumStr.Length % 2 == 0 ? squareNumStr.Length / 2 : squareNumStr.Length / 2 + 1;
            var leftStrCnt = squareNumStr.Length - rightStrCnt;
    
            var leftNum = leftStrCnt != 0 ? long.Parse(squareNumStr.ToString().Substring(0, leftStrCnt)) : 0;
            var rightNum = long.Parse(squareNumStr.ToString().Substring(leftStrCnt, rightStrCnt));
    
            if (leftNum + rightNum == p)
            {
                Console.Write($"{p} ");
                hasModifiedKaprekarNum = true;
            }
    
            p++;
        }
    
        if (!hasModifiedKaprekarNum) Console.WriteLine("INVALID RANGE");
    }