Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn factorial(n: usize) -> usize {
- match n {
- 0 => 1,
- _ => n * factorial(n - 1),
- }
- }
- fn factorial_to_base10(val: usize) -> usize {
- let mut result = 0;
- let mut i = 0;
- let mut val = val;
- while val > 0 {
- result += (val % 10) * factorial(i);
- i += 1;
- val /= 10;
- }
- result
- }
- fn base10_to_factorial(val: usize) -> usize {
- let mut result = 0;
- let mut val = val;
- let mut digits = Vec::new();
- let mut i = 1;
- while val > 0 {
- digits.push(val % i);
- val /= i;
- i += 1;
- }
- for &d in digits.iter().rev() {
- result *= 10;
- result += d;
- }
- result
- }
- fn main() {
- assert_eq!(463, factorial_to_base10(341010));
- assert_eq!(719, factorial_to_base10(543210));
- assert_eq!(341010, base10_to_factorial(463));
- }
Add Comment
Please, Sign In to add comment