Program to find last two digits of 2^n
Last Updated :
26 Dec, 2022
Given a number n, we need to find the last two digits of 2n.
Examples:
Input : n = 7
Output : 28
Input : n = 72
Output : 96
2^72 = 4722366482869645213696
A Naive Approach is to find the value of 2^n iteratively or using pow function. Once the value of 2^n is calculated, find the last two digits and print it.
Note: This approach will only work for 2n within a certain range, as overflow occurs.
Below is the implementation of the above approach.
C++
// C++ code to find last 2 digits of 2^n
#include <bits/stdc++.h>
using namespace std;
// Find the first digit
int LastTwoDigit(long long int num)
{
// Get the last digit from the number
int one = num % 10;
// Remove last digit from number
num /= 10;
// Get the last digit from
// the number(last second of num)
int tens = num % 10;
// Take last digit to ten's position
// i.e. last second digit
tens *= 10;
// Add the value of ones and tens to
// make it complete 2 digit number
num = tens + one;
// return the first digit
return num;
}
// Driver program
int main()
{
int n = 10;
long long int num = 1;
// pow function used
num = pow(2, n);
cout << "Last " << 2;
cout << " digits of " << 2;
cout << "^" << n << " = ";
cout << LastTwoDigit(num) << endl;
return 0;
}
Java
// Java code to find last 2 digits of 2^n
class Geeks {
// Find the first digit
static long LastTwoDigit(long num)
{
// Get the last digit from the number
long one = num % 10;
// Remove last digit from number
num /= 10;
// Get the last digit from
// the number(last second of num)
long tens = num % 10;
// Take last digit to ten's position
// i.e. last second digit
tens *= 10;
// Add the value of ones and tens to
// make it complete 2 digit number
num = tens + one;
// return the first digit
return num;
}
// Driver code
public static void main(String args[])
{
int n = 10;
long num = 1;
// pow function used
num = (long)Math.pow(2, n);
System.out.println("Last 2 digits of 2^10 = "
+LastTwoDigit(num));
}
}
// This code is contributed by ankita_saini
Python3
# Python 3 code to find
# last 2 digits of 2^n
# Find the first digit
def LastTwoDigit(num):
# Get the last digit from the number
one = num % 10
# Remove last digit from number
num //= 10
# Get the last digit from
# the number(last second of num)
tens = num % 10
# Take last digit to ten's position
# i.e. last second digit
tens *= 10
# Add the value of ones and tens to
# make it complete 2 digit number
num = tens + one
# return the first digit
return num
# Driver Code
if __name__ == "__main__":
n = 10
num = 1
# pow function used
num = pow(2, n);
print("Last " + str(2) + " digits of " +
str(2) + "^" + str(n) +
" = ", end = "")
print(LastTwoDigit(num))
# This code is contributed
# by ChitraNayal
C#
// C# code to find last
// 2 digits of 2^n
using System;
class GFG
{
// Find the first digit
static long LastTwoDigit(long num)
{
// Get the last digit
// from the number
long one = num % 10;
// Remove last digit
// from number
num /= 10;
// Get the last digit
// from the number(last
// second of num)
long tens = num % 10;
// Take last digit to
// ten's position i.e.
// last second digit
tens *= 10;
// Add the value of ones
// and tens to make it
// complete 2 digit number
num = tens + one;
// return the first digit
return num;
}
// Driver code
public static void Main(String []args)
{
int n = 10;
long num = 1;
// pow function used
num = (long)Math.Pow(2, n);
Console.WriteLine("Last 2 digits of 2^10 = " +
LastTwoDigit(num));
}
}
// This code is contributed
// by Ankita_Saini
PHP
<?php
// PHP code to find last
// 2 digits of 2^n
// Find the first digit
function LastTwoDigit($num)
{
// Get the last digit
// from the number
$one = $num % 10;
// Remove last digit
// from number
$num /= 10;
// Get the last digit
// from the number(last
// second of num)
$tens = $num % 10;
// Take last digit to
// ten's position i.e.
// last second digit
$tens *= 10;
// Add the value of ones
// and tens to make it
// complete 2 digit number
$num = $tens + $one;
// return the first digit
return $num;
}
// Driver Code
$n = 10;
$num = 1;
// pow function used
$num = pow(2, $n);
echo ("Last " . 2);
echo (" digits of " . 2);
echo("^" . $n . " = ");
echo( LastTwoDigit($num)) ;
// This code is contributed
// by Shivi_Aggarwal
?>
JavaScript
<script>
// Javascript code to find last 2 digits of 2^n
// Find the first digit
function LastTwoDigit(num)
{
// Get the last digit from the number
let one = num % 10;
// Remove last digit from number
num = Math.floor(num/10);
// Get the last digit from
// the number(last second of num)
let tens = num % 10;
// Take last digit to ten's position
// i.e. last second digit
tens *= 10;
// Add the value of ones and tens to
// make it complete 2 digit number
num = tens + one;
// return the first digit
return num;
}
// Driver program
let n = 10;
let num = 1;
// pow function used
num = Math.pow(2, n);
document.write("Last " + 2);
document.write(" digits of " + 2);
document.write("^" + n + " = ");
document.write(LastTwoDigit(num) + "<br>");
// This code is contributed by Mayank Tyagi
</script>
Output: Last 2 digits of 2^10 = 24
Time Complexity: O(log n), due to the pow() function
Auxiliary Space: O(1)
Efficient approach: The efficient way is to keep only 2 digits after every multiplication. This idea is very similar to the one discussed in Modular exponentiation where a general way is discussed to find (a^b)%c, here in this case c is 10^2 as the last two digits are only needed.
Below is the implementation of the above approach.
C++
// C++ code to find last 2 digits of 2^n
#include <iostream>
using namespace std;
/* Iterative Function to calculate (x^y)%p in O(log y) */
int power(long long int x, long long int y, long long int p)
{
long long int res = 1; // Initialize result
x = x % p; // Update x if it is more than or
// equal to p
while (y > 0) {
// If y is odd, multiply x with result
if (y & 1)
res = (res * x) % p;
// y must be even now
y = y >> 1; // y = y/2
x = (x * x) % p;
}
return res;
}
// C++ function to calculate
// number of digits in x
int numberOfDigits(int x)
{
int i = 0;
while (x) {
x /= 10;
i++;
}
return i;
}
// C++ function to print last 2 digits of 2^n
void LastTwoDigit(int n)
{
cout << "Last " << 2;
cout << " digits of " << 2;
cout << "^" << n << " = ";
// Generating 10^2
int temp = 1;
for (int i = 1; i <= 2; i++)
temp *= 10;
// Calling modular exponentiation
temp = power(2, n, temp);
// Printing leftmost zeros. Since (2^n)%2
// can have digits less than 2. In that
// case we need to print zeros
for (int i = 0; i < 2 - numberOfDigits(temp); i++)
cout << 0;
// If temp is not zero then print temp
// If temp is zero then already printed
if (temp)
cout << temp;
}
// Driver program to test above functions
int main()
{
int n = 72;
LastTwoDigit(n);
return 0;
}
Java
// Java code to find last
// 2 digits of 2^n
class GFG
{
/* Iterative Function to
calculate (x^y)%p in O(log y) */
static int power(long x, long y,
long p)
{
int res = 1; // Initialize result
x = x % p; // Update x if it is more
// than or equal to p
while (y > 0)
{
// If y is odd, multiply
// x with result
long r = y & 1;
if (r == 1)
res = (res * (int)x) % (int)p;
// y must be even now
y = y >> 1; // y = y/2
x = (x * x) % p;
}
return res;
}
// Java function to calculate
// number of digits in x
static int numberOfDigits(int x)
{
int i = 0;
while (x != 0)
{
x /= 10;
i++;
}
return i;
}
// Java function to print
// last 2 digits of 2^n
static void LastTwoDigit(int n)
{
System.out.print("Last " + 2 +
" digits of " + 2 + "^");
System.out.print(n +" = ");
// Generating 10^2
int temp = 1;
for (int i = 1; i <= 2; i++)
temp *= 10;
// Calling modular exponentiation
temp = power(2, n, temp);
// Printing leftmost zeros.
// Since (2^n)%2 can have digits
// less than 2. In that case
// we need to print zeros
for (int i = 0;
i < ( 2 - numberOfDigits(temp)); i++)
System.out.print(0 + " ");
// If temp is not zero then
// print temp. If temp is zero
// then already printed
if (temp != 0)
System.out.println(temp);
}
// Driver Code
public static void main(String[] args)
{
int n = 72;
LastTwoDigit(n);
}
}
// This code is contributed
// by ChitraNayal
Python3
# Python 3 code to find
# last 2 digits of 2^n
# Iterative Function to
# calculate (x^y)%p in O(log y)
def power(x, y, p):
res = 1 # Initialize result
x = x % p # Update x if it is more
# than or equal to p
while (y > 0):
# If y is odd, multiply
# x with result
if (y & 1):
res = (res * x) % p
# y must be even now
y = y >> 1 # y = y/2
x = (x * x) % p
return res
# function to calculate
# number of digits in x
def numberOfDigits(x):
i = 0
while (x):
x //= 10
i += 1
return i
# function to print
# last 2 digits of 2^n
def LastTwoDigit(n):
print("Last " + str(2) +
" digits of " + str(2), end = "")
print("^" + str(n) + " = ", end = "")
# Generating 10^2
temp = 1
for i in range(1, 3):
temp *= 10
# Calling modular exponentiation
temp = power(2, n, temp)
# Printing leftmost zeros.
# Since (2^n)%2 can have digits
# less than 2. In that case we
# need to print zeros
for i in range(2 - numberOfDigits(temp)):
print(0, end = "")
# If temp is not zero then print temp
# If temp is zero then already printed
if temp:
print(temp)
# Driver Code
if __name__ == "__main__":
n = 72
LastTwoDigit(n)
# This code is contributed
# by ChitraNayal
C#
// C# code to find last
// 2 digits of 2^n
using System;
class GFG
{
/* Iterative Function to calculate
(x^y)%p in O(log y) */
static int power(long x, long y,
long p)
{
int res = 1; // Initialize result
x = x % p; // Update x if it is more
// than or equal to p
while (y > 0)
{
// If y is odd, multiply
// x with result
long r = y & 1;
if (r == 1)
res = (res * (int)x) % (int)p;
// y must be even now
y = y >> 1; // y = y/2
x = (x * x) % p;
}
return res;
}
// C# function to calculate
// number of digits in x
static int numberOfDigits(int x)
{
int i = 0;
while (x != 0)
{
x /= 10;
i++;
}
return i;
}
// C# function to print
// last 2 digits of 2^n
static void LastTwoDigit(int n)
{
Console.Write("Last " + 2 +
" digits of " + 2 + "^");
Console.Write(n + " = ");
// Generating 10^2
int temp = 1;
for (int i = 1; i <= 2; i++)
temp *= 10;
// Calling modular exponentiation
temp = power(2, n, temp);
// Printing leftmost zeros. Since
// (2^n)%2 can have digits less
// then 2. In that case we need
// to print zeros
for (int i = 0;
i < ( 2 - numberOfDigits(temp)); i++)
Console.Write(0 + " ");
// If temp is not zero then print temp
// If temp is zero then already printed
if (temp != 0)
Console.Write(temp);
}
// Driver Code
public static void Main()
{
int n = 72;
LastTwoDigit(n);
}
}
// This code is contributed
// by ChitraNayal
PHP
<?php
// PHP code to find last
// 2 digits of 2^n
/* Iterative Function to
calculate (x^y)%p in O(log y) */
function power($x, $y, $p)
{
$res = 1; // Initialize result
$x = $x % $p; // Update x if it
// is more than or
// equal to p
while ($y > 0)
{
// If y is odd, multiply
// x with result
if ($y & 1)
$res = ($res * $x) % $p;
// y must be even now
$y = $y >> 1; // y = y/2
$x = ($x * $x) % $p;
}
return $res;
}
// PHP function to calculate
// number of digits in x
function numberOfDigits($x)
{
$i = 0;
while ($x)
{
$x /= 10;
$i++;
}
return $i;
}
// PHP function to print
// last 2 digits of 2^n
function LastTwoDigit($n)
{
echo("Last " . 2);
echo(" digits of " . 2);
echo("^" . $n ." = ");
// Generating 10^2
$temp = 1;
for ($i = 1; $i <= 2; $i++)
$temp *= 10;
// Calling modular
// exponentiation
$temp = power(2, $n, $temp);
// Printing leftmost zeros.
// Since (2^n)%2 can have
// digits less than 2. In
// that case we need to
// print zeros
for ($i = 0;
$i < 2 - numberOfDigits($temp); $i++)
echo (0);
// If temp is not zero then
// print temp. If temp is zero
// then already printed
if ($temp)
echo ($temp);
}
// Driver Code
$n = 72;
LastTwoDigit($n);
// This code is contributed
// by Shivi_Aggarwal
?>
JavaScript
<script>
// Javascript code to find last
// 2 digits of 2^n
/* Iterative Function to
calculate (x^y)%p in O(log y) */
function power(x, y, p)
{
let res = 1; // Initialize result
x = x % p; // Update x if it is more
// than or equal to p
while (y > 0)
{
// If y is odd, multiply
// x with result
let r = y & 1;
if (r == 1)
res = (res * x) % p;
// y must be even now
y = y >> 1; // y = y/2
x = (x * x) % p;
}
return res;
}
// JavaScript function to calculate
// number of digits in x
function numberOfDigits(x)
{
let i = 0;
while (x != 0)
{
x /= 10;
i++;
}
return i;
}
// JavaScript function to print
// last 2 digits of 2^n
function LastTwoDigit(n)
{
document.write("Last " + 2 +
" digits of " + 2 + "^");
document.write(n +" = ");
// Generating 10^2
let temp = 1;
for (let i = 1; i <= 2; i++)
temp *= 10;
// Calling modular exponentiation
temp = power(2, n, temp);
// Printing leftmost zeros.
// Since (2^n)%2 can have digits
// less than 2. In that case
// we need to print zeros
for (let i = 0;
i < ( 2 - numberOfDigits(temp)); i++)
document.write(0 + " ");
// If temp is not zero then
// print temp. If temp is zero
// then already printed
if (temp != 0)
document.write(temp);
}
// driver program
let n = 72;
LastTwoDigit(n);
</script>
Output: Last 2 digits of 2^72 = 96
Time Complexity: O(log n)
Auxiliary Space: O(1)
Similar Reads
Program to find the last two digits of x^y
The task is to find the last two digits of x^y. Since the digits with which it can end are 0-9, Hence this problem can be divided into 5 cases: Case 1: when x ends with 1 For finding the last two digit of a number, when the number ends with 1 then we have to do following steps shown as in the figure
6 min read
Program to find last two digits of Nth Fibonacci number
Given a number ânâ, write a function that prints the last two digits of n-th (ânâ can also be a large number) Fibonacci number.Examples: Input : n = 65 Output : 65 Input : n = 365 Output : 65 Recommended: Please solve it on âPRACTICEâ first, before moving on to the solution. A simple solution is to
9 min read
Program to find last digit of n'th Fibonacci Number
Given a number 'n', write a function that prints the last digit of n'th ('n' can also be a large number) Fibonacci number. Examples : Input : n = 0 Output : 0 Input: n = 2 Output : 1 Input : n = 7 Output : 3 Recommended PracticeThe Nth FibonnaciTry It! Method 1 : (Naive Method) Simple approach is to
13 min read
Last two digits of powers of 7
Given a positive N, the task is to find the last two digits of 7N.Examples: Input: N = 5 Output: 07 Explanation: The value of 75 = 7 * 7 * 7 * 7 * 7 = 8507 Therefore, the last two digits are 07.Input: N = 12 Output: 01 Explanation: The value of 712 = 13841287201 Therefore, the last two digits are 01
4 min read
Last digit in a power of 2
Given a number n, we need to find the last digit of 2n Input : n = 4 Output : 6 The last digit in 2^4 = 16 is 6Input : n = 11 Output : 8 The last digit in 2^11 = 2048 is 8 A Naive Solution is to first compute power = pow(2, n), then find the last digit in power using power % 10. This solution is ine
6 min read
Number of digits in 2 raised to power n
Let n be any power raised to base 2 i.e 2n. We are given the number n and our task is to find out the number of digits contained in the number 2n.Examples: Input : n = 5 Output : 2 Explanation : 2n = 32, which has only 2 digits. Input : n = 10 Output : 4 Explanation : 2n = 1024, which has only 4 dig
5 min read
Find the last two digits of Factorial of a given Number
Given an integer N, the task is to find the last two digits of factorial of a number. Examples: Input: N = 7 Output: 40 Explanation: 7! = 5040Input: N = 11 Output: 00 Approach#1We can observe that for N >= 10, the last two places of its factorial will contain 0's only. Hence N! % 100 for any N
15 min read
Find unit digit of x raised to power y
Given two numbers x and y, find unit digit of xy. Examples : Input : x = 2, y = 1 Output : 2 Explanation 2^1 = 2 so units digit is 2. Input : x = 4, y = 2 Output : 6 Explanation 4^2 = 16 so units digit is 6. Method 1 (Simple) Compute value of xy and find its last digit. This method causes overflow f
11 min read
Program to find first N Fermat Numbers
Fermat numbers are non-negative odd numbers which is valid for all values of k>=0. Only the first seven terms of the sequence are known till date. First, five terms of the series are prime but rest of them are not. The kth term of Fermat number is represented as The sequence: 3, 5, 17, 257, 65537
6 min read
Find the last digit of given series
Given an integer n, find the last digit of this sequence,\displaystyle S =\sum_{i=0,\ 2^i\le n}^\infty \sum_{j=0}^n 2^{2^i + 2j} i.e. Summation of F(n) from i = 0 to 2i ? n, where F(n) is the summation of 22i+2j Where j varies from 0 to n. n can varies from 0 to 1017 Examples: Input: 2 Output: 6 Exp
12 min read