Submission #36066421


Source Code Expand

use proconio::input;

fn main() {
    input! {
        n: u128,
    }

    println!("{}", rec(n));
}

fn rec(n: u128) -> u128 {
    if n == 0 {
        return 1;
    }
    
    let mut tmp = n;
    let mut i = 1;
    loop {
        if tmp / 3 == 0 {
            break;
        }
        tmp /= 3;
        i += 1;
    }

    let mut result = 0u128;
    for j in 0..=i {
        let mut arg = 1;

        for _ in 0..j {
            arg = arg * 2;
        }

        for _ in j..i {
            arg = arg * 3;
        }

        result += cmp(i, j) * rec(n / arg);
    }

    return result;
}

fn cmp(n: u128, k: u128) -> u128 {
    let k = if (n / 2) < k { n - k } else { k };
    let mut result = 1;
    for i in 0..k {
        result = result * (n - i) / (i + 1);
    }

    return result;
}

Submission Info

Submission Time
Task D - Yet Another Recursive Function
User Bookends
Language Rust (1.42.0)
Score 400
Code Size 845 Byte
Status AC
Exec Time 7 ms
Memory 2152 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 15
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 7 ms 1880 KiB
00_sample_02.txt AC 2 ms 2056 KiB
00_sample_03.txt AC 3 ms 2048 KiB
01_test_01.txt AC 2 ms 2056 KiB
01_test_02.txt AC 2 ms 1948 KiB
01_test_03.txt AC 2 ms 2148 KiB
01_test_04.txt AC 2 ms 2084 KiB
01_test_05.txt AC 2 ms 2020 KiB
01_test_06.txt AC 2 ms 2048 KiB
01_test_07.txt AC 2 ms 1996 KiB
01_test_08.txt AC 2 ms 2068 KiB
01_test_09.txt AC 2 ms 2152 KiB
01_test_10.txt AC 2 ms 2056 KiB
01_test_11.txt AC 3 ms 2068 KiB
01_test_12.txt AC 2 ms 2040 KiB