You are given two integer numbers, the base a (number of digits d, such that 1 <= d <= 1000) and the index b (0 <= b <= 922*10^15). You have to find the last digit of a^b.
Input : 3 10 Output : 9 Input : 6 2 Output : 6 Input : 150 53 Output : 0
After taking few examples, we can notice below pattern.
Number | Last digits that repeat in cycle 1 | 1 2 | 4, 8, 6, 2 3 | 9, 7, 1, 3 4 | 6, 4 5 | 5 6 | 6 7 | 9, 3, 1, 7 8 | 4, 2, 6, 8 9 | 1, 9
In the given table, we can see that maximum length for cycle repetition is 4.
Example: 2*2 = 4*2 = 8*2 = 16*2 = 32 last digit in 32 is 2 that means after multiplying 4 times digit repeat itself. So the algorithm is very simple .
Source : Brilliants.org
- Since number are very large we store them as a string.
- Take last digit in base a.
- Now calculate b%4. Here b is very large.
- If b%4==0 that means b is completely divisible by 4, so our exponent now will be exp = 4 because by multiplying number 4 times, we get the last digit according to cycle table in above diagram.
- If b%4!=0 that means b is not completely divisible by 4, so our exponent now will be exp=b%4 because by multiplying number exponent times, we get the last digit according to cycle table in above diagram.
- Now calculate ldigit = pow( last_digit_in_base, exp ).
- Last digit of a^b will be ldigit%10.
Below is the implementation of above algorithm.
This article is contributed by Shashank Mishra ( Gullu ). This article is reviewed by team geeksforgeeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
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.
- Print all K digit repeating numbers in a very large number
- Multiply large integers under large modulo
- Program to find last digit of n'th Fibonnaci Number
- Last non-zero digit of a factorial
- Find last k digits in product of an array numbers
- GCD of two numbers when one of them can be very large
- Remainder with 7 for large numbers
- Sum of two large numbers
- Difference of two large numbers
- Sort an array of large numbers
- Multiply Large Numbers represented as Strings
- Large Fibonacci Numbers in Java
- Divisible by 37 for large numbers
- Writing power function for large numbers
- LCM of two large numbers
- Fermat's Factorization method for large numbers
- Modulo power for large numbers represented as strings
- Sum of first N natural numbers when N is extremely large
- Sum of all natural numbers from L to R ( for large values of L and R )
- How to generate Large Prime numbers for RSA Algorithm
Improved By : nitin mittal