KLastNonZeroDigits
SRM 341 · 2007-03-10 · by pure_
Problem Statement
You are given an int N. The factorial of N is defined as N*(N-1)*(N-2)*...*1. Compute the factorial of N and remove all of its rightmost zero digits. If the result is more than K digits long, return the last K digits as a string. Otherwise, return the entire result as a string.
Constraints
- N will be between 1 and 20, inclusive.
- K will be between 1 and 9, inclusive.
10 3 Returns: "288"
You would first compute the factorial of 10, which is 10*9*8*7*6*5*4*3*2*1=3628800. You would then remove all rightmost zeros to get 36288. Finally, you would return the last 3 digits as a string: "288".
6 1 Returns: "2"
The factorial of 6 is 720.
6 3 Returns: "72"
7 2 Returns: "04"
The factorial of 7 is 5040. We remove the last zero to get "504". The last 2 digits of "504" are "04".
20 9 Returns: "200817664"
Submissions are judged against all 55 archived test cases, of which 5 are shown here. Case numbers match the judge’s.
Language: C++17 · define a public class KLastNonZeroDigits with a public method string getKDigits(int N, int K) · 55 test cases · 2 s / 256 MB per case