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 |
|
|
| 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 |