File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change
1
+ import argparse
2
+ import math
3
+
4
+
5
+ def dec_to_fact (n : int ) -> int :
6
+ """Refer tp XKCD 2835."""
7
+ fact = 1
8
+ i = 1
9
+ while fact < n :
10
+ i += 1
11
+ fact = math .factorial (i )
12
+ if fact == n :
13
+ largest_base , largest_fact = i , fact
14
+ else :
15
+ largest_base = i - 1
16
+ largest_fact = math .factorial (largest_base )
17
+
18
+ leading_digit = math .floor (n / largest_fact )
19
+ leading_digit_padded = int (str (leading_digit ) + "0" * (largest_base - 1 ))
20
+ full_number = leading_digit_padded
21
+
22
+ total_n_found_so_far = leading_digit * largest_fact
23
+ if total_n_found_so_far == n :
24
+ return full_number
25
+ return full_number + dec_to_fact (n - total_n_found_so_far )
26
+
27
+
28
+ if __name__ == "__main__" :
29
+ parser = argparse .ArgumentParser ()
30
+ parser .add_argument ("value" )
31
+
32
+ args = parser .parse_args ()
33
+ decimal = int (args .value )
34
+
35
+ factoradic = dec_to_fact (decimal )
36
+ print (factoradic )
You can’t perform that action at this time.
0 commit comments