“Last digit of a large number” is a coding puzzle that people can be attempted in the following languages: haskell, javascript, python, ruby, kotlin, cpp, r, rust, and purescript.
- Difficulty: 5 kyu
- Stars: 535
- Votes: 910
- Category: algorithms
- Tags: Algorithms
- Source: codewars
Description
Define a function that takes in two non-negative integers $a$
and $b$
and returns the last decimal digit of $a^b$
. Note that $a$
and $b$
may be very large!
For example, the last decimal digit of $9^7$
is $9$
, since $9^7 = 4782969$
. The last decimal digit of $({2^{200}})^{2^{300}}$
, which has over $10^{92}$
decimal digits, is $6$
. Also, please take $0^0$
to be $1$
.
You may assume that the input will always be valid.
Examples
haskell
lastDigit 4 1 `shouldBe` 4
lastDigit 4 2 `shouldBe` 6
lastDigit 9 7 `shouldBe` 9
lastDigit 10 (10^10) `shouldBe` 0
lastDigit (2^200) (2^300) `shouldBe` 6
javascript
lastDigit("4", "1") // returns 4
lastDigit("4", "2") // returns 6
lastDigit("9", "7") // returns 9
lastDigit("10","10000000000") // returns 0
python
last_digit(4, 1) # returns 4
last_digit(4, 2) # returns 6
last_digit(9, 7) # returns 9
last_digit(10, 10 ** 10) # returns 0
last_digit(2 ** 200, 2 ** 300) # returns 6
kotlin
lastDigit(4, 1) # returns 4
lastDigit(4, 2) # returns 6
lastDigit(9, 7) # returns 9
lastDigit(10, 10 ** 10) # returns 0
lastDigit(2 ** 200, 2 ** 300) # returns 6
ruby
last_digit(4, 1) # returns 4
last_digit(4, 2) # returns 6
last_digit(9, 7) # returns 9
last_digit(10, 10 ** 10) # returns 0
last_digit(2 ** 200, 2 ** 300) # returns 6
cpp
last_digit("4", "1") // returns 4
last_digit("4", "2") // returns 6
last_digit("9", "7") // returns 9
last_digit("10","10000000000") // returns 0
r
last_digit("4", "1") # returns 4
last_digit("4", "2") # returns 6
last_digit("9", "7") # returns 9
last_digit("10","10000000000") # returns 0
rust
last_digit("4", "1") // returns 4
last_digit("4", "2") // returns 6
last_digit("9", "7") // returns 9
last_digit("10","10000000000") // returns 0
purescript
lastDigit "4" "1" -- => 4
lastDigit "4" "2" -- => 6
lastDigit "9" "7" -- => 9
lastDigit "10" "10000000000" -- => 0
Remarks
JavaScript, C++, R, PureScript
Since these languages don’t have native arbitrarily large integers, your arguments are going to be strings representing non-negative integers instead.
Solve It Here
Click the link below to solve it on Codewars:
Notes
This puzzle was posted by a Slackbot via a slash command. If you want to help work on the app, send a message to @Josh.
If you don’t want to see the coding puzzles when you visit the forum, you can go into your settings and mute the puzzles category.