Given two integers N and B, the task is to find the count of natural numbers of Base B up to N digits.
Examples:
Input: N = 2, B = 10
Output: 99
Explanation:
1, 2, 3, 4, 5, 6, 7, 8, 9 are 1 digit Natural numbers of Base 10.
10, 11, 12………99 are 2 digit Natural numbers of Base 10
So, total = 9 + 90 = 99Input: N = 2, B = 16
Output: 255
Explanation:
There are a total of 240 two digit hexadecimal numbers and 15 one digit hexadecimal numbers.
Therefore, 240 + 15 = 255.
Approach: On observing carefully the count of numbers with N digits in base B is a geometric progression formed with the first term being (B – 1) and a common ratio of B.
Therefore,
Nth term = Number of natutal numbers of N digits in Base B = (B – 1) * BN – 1
Finally, count of all natural numbers in Base B up to N digits can be found out by iterating a loop from 1 to N and calculating the sum of ith term using the above formula.
Below is the implementation of the above approach:
C++
// C++ implementation to find the count // of natural numbers upto N digits #include <bits/stdc++.h> using namespace std; // Function to return the count of // natural numbers upto N digits int count( int N, int B) { int sum = 0; // Loop to iterate from 1 to N // and calculating number of // natural numbers for every 'i'th digit. for ( int i = 1; i <= N; i++) { sum += (B - 1) * pow (B, i - 1); } return sum; } // Driver Code int main() { int N = 2, B = 10; cout << count(N, B); return 0; } |
Java
// Java implementation to find the count // of natural numbers upto N digits class GFG{ // Function to return the count of // natural numbers upto N digits static int count( int N, int B) { int sum = 0 ; // Loop to iterate from 1 to N // and calculating number of // natural numbers for every 'i'th digit. for ( int i = 1 ; i <= N; i++){ sum += (B - 1 ) * Math.pow(B, i - 1 ); } return sum; } // Driver Code public static void main(String[] args) { int N = 2 , B = 10 ; System.out.print(count(N, B)); } } // This code is contributed by gauravrajput1 |
Python3
# Python3 implementation to find the count # of natural numbers up to N digits from math import pow # Function to return the count of # natural numbers upto N digits def count(N, B): sum = 0 # Loop to iterate from 1 to N # and calculating number of # natural numbers for every 'i'th digit. for i in range ( 1 , N + 1 ): sum + = (B - 1 ) * pow (B, i - 1 ) return sum # Driver Code if __name__ = = '__main__' : N = 2 B = 10 print ( int (count(N, B))) # This code is contributed by Bhupendra_Singh |
C#
// C# implementation to find the count // of natural numbers upto N digits using System; using System.Collections.Generic; class GFG{ // Function to return the count of // natural numbers upto N digits static int count( int N, int B) { int sum = 0; // Loop to iterate from 1 to N // and calculating number of // natural numbers for every // 'i'th digit. for ( int i = 1; i <= N; i++) { sum += ( int )((B - 1) * Math.Pow(B, i - 1)); } return sum; } // Driver Code public static void Main(String[] args) { int N = 2, B = 10; Console.Write(count(N, B)); } } // This code is contributed by amal kumar choubey |
99
Time Complexity: O(N)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.