Given an integer N, the task is to find the smallest and the largest N-digit numbers which start and ends with digit N.
Examples:
Input: N = 3
Output:
Smallest Number = 303
Largest Number = 393
Explanation:
303 is the smallest 3 digit number starting and ending with 3.
393 is the largest 3 digit number starting and ending with 3.
Input: N = 1
Output:
Smallest Number = 1
Largest Number = 1
Explanation:
1 is both the smallest and the largest 1 digit number which starts and ends with 1.
Approach:
We know that the largest and the smallest N-digit number is 9999…9, where 9 repeats N-times and 1000…. 0, where 0 repeats N-1 times respectively.
Now to get the smallest and largest N-digit number starts and ends with N, we need to replace the first and the last digit of the smallest and the largest N-digit number by N.
We have to take care of corner case i.e., when N = 1, here both the largest and the smallest number will be 1.
Below is the implementation of the above approach:
C++
// C++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to find n digit// largest number starting// and ending with nstring findNumberL(int n){ // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // largest number string result = ""; // Find the number of // digits in number n int length = (int)floor(log10(n) + 1); // Append 9 for(int i = 1; i <= n - (2 * length); i++) { result += '9'; } // To make it largest n digit // number starting and ending // with n, we just need to // append n at start and end result = to_string(n) + result + to_string(n); // Return the largest number return result;} // Function to find n digit// smallest number starting// and ending with nstring findNumberS(int n){ // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // smallest number string result = ""; // Find the number of // digits in number n int length = (int)floor(log10(n) + 1); for (int i = 1; i <= n - (2 * length); i++) { result += '0'; } // To make it smallest n digit // number starting and ending // with n, we just need to // append n at start and end result = to_string(n) + result + to_string(n); // Return the smallest number return result;}// Driver codeint main(){ // Given number int N = 3; // Function call cout << "Smallest Number = " << findNumberS(N) << endl; cout << "Largest Number = " << findNumberL(N); return 0;}// This code is contributed by divyeshrabadiya07 |
Java
// Java program for the above approachimport java.io.*;class GFG { // Function to find n digit // largest number starting // and ending with n static String findNumberL(int n) { // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // largest number String result = ""; // Find the number of // digits in number n int length = (int)Math.floor( Math.log10(n) + 1); // Append 9 for (int i = 1; i <= n - (2 * length); i++) { result += '9'; } // To make it largest n digit // number starting and ending // with n, we just need to // append n at start and end result = Integer.toString(n) + result + Integer.toString(n); // Return the largest number return result; } // Function to find n digit // smallest number starting // and ending with n static String findNumberS(int n) { // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // smallest number String result = ""; // Find the number of // digits in number n int length = (int)Math.floor( Math.log10(n) + 1); for (int i = 1; i <= n - (2 * length); i++) { result += '0'; } // To make it smallest n digit // number starting and ending // with n, we just need to // append n at start and end result = Integer.toString(n) + result + Integer.toString(n); // Return the smallest number return result; } // Driver Code public static void main(String[] args) { // Given Number int N = 3; // Function Call System.out.println( "Smallest Number = " + findNumberS(N)); System.out.print( "Largest Number = " + findNumberL(N)); }} |
Python3
# Python3 program for the # above approachimport math# Function to find n digit# largest number starting#and ending with ndef findNumberL(n): # Corner Case when n = 1 if (n == 1): return "1" # Result will store the # n - 2*length(n) digit # largest number result = "" # Find the number of # digits in number n length = math.floor(math.log10(n) + 1) # Append 9 for i in range(1, n - (2 * length) + 1): result += '9' # To make it largest n digit # number starting and ending # with n, we just need to # append n at start and end result = (str(n) + result + str(n)) # Return the largest number return result# Function to find n digit# smallest number starting# and ending with ndef findNumberS(n): # Corner Case when n = 1 if (n == 1): return "1" # Result will store the # n - 2*length(n) digit # smallest number result = "" # Find the number of # digits in number n length = math.floor(math.log10(n) + 1) for i in range(1, n - (2 * length) + 1): result += '0' # To make it smallest n digit # number starting and ending # with n, we just need to # append n at start and end result = (str(n) + result + str(n)) # Return the smallest number return result# Driver Codeif __name__ == "__main__": # Given Number N = 3 # Function Call print("Smallest Number = " + findNumberS(N)) print("Largest Number = "+ findNumberL(N))# This code is contributed by Chitranayal |
C#
// C# program for the above approachusing System;class GFG{// Function to find n digit// largest number starting// and ending with nstatic String findNumberL(int n){ // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // largest number String result = ""; // Find the number of // digits in number n int length = (int)Math.Floor( Math.Log10(n) + 1); // Append 9 for(int i = 1; i <= n - (2 * length); i++) { result += '9'; } // To make it largest n digit // number starting and ending // with n, we just need to // append n at start and end result = n.ToString() + result + n.ToString(); // Return the largest number return result;}// Function to find n digit// smallest number starting// and ending with nstatic String findNumberS(int n){ // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // smallest number String result = ""; // Find the number of // digits in number n int length = (int)Math.Floor( Math.Log10(n) + 1); for (int i = 1; i <= n - (2 * length); i++) { result += '0'; } // To make it smallest n digit // number starting and ending // with n, we just need to // append n at start and end result = n.ToString() + result + n.ToString(); // Return the smallest number return result;}// Driver Codepublic static void Main(String[] args){ // Given number int N = 3; // Function call Console.WriteLine("Smallest Number = " + findNumberS(N)); Console.Write("Largest Number = " + findNumberL(N));}}// This code is contributed by Amit Katiyar |
Javascript
<script>// JavaScript program for the above approach // Function to find n digit // largest number starting // and ending with n function findNumberL(n) { // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // largest number let result = ""; // Find the number of // digits in number n let length = Math.floor( Math.log10(n) + 1); // Append 9 for (let i = 1; i <= n - (2 * length); i++) { result += '9'; } // To make it largest n digit // number starting and ending // with n, we just need to // append n at start and end result = n.toString() + result + n.toString(); // Return the largest number return result; } // Function to find n digit // smallest number starting // and ending with n function findNumberS(n) { // Corner Case when n = 1 if (n == 1) return "1"; // Result will store the // n - 2*length(n) digit // smallest number let result = ""; // Find the number of // digits in number n let length = Math.floor( Math.log10(n) + 1); for (let i = 1; i <= n - (2 * length); i++) { result += '0'; } // To make it smallest n digit // number starting and ending // with n, we just need to // append n at start and end result = n.toString() + result + n.toString(); // Return the smallest number return result; } // Driver Code // Given Number let N = 3; // Function Call document.write( "Smallest Number = " + findNumberS(N) + "<br/>"); document.write( "Largest Number = " + findNumberL(N)); </script> |
Smallest Number = 303 Largest Number = 393
Time Complexity: O(N)
Space Complexity: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] There you will find 48978 more Information on that Topic: geeksforgeeks.org/smallest-and-largest-n-digit-number-starting-and-ending-with-n/ […]
… [Trackback]
[…] Find More Info here to that Topic: geeksforgeeks.org/smallest-and-largest-n-digit-number-starting-and-ending-with-n/ […]
… [Trackback]
[…] Find More here on that Topic: geeksforgeeks.org/smallest-and-largest-n-digit-number-starting-and-ending-with-n/ […]