Submission #49305448


Source Code Expand

use proconio::input;
const DEBUG:bool = false;

// fn increase_good_digit(a: &mut Vec<char>, i: usize) {
//     if i >= a.len() {
//         a.push('2');
//     } else {
//         match a[i] {
//             '0' => {
//                 a[i] = '2';
//             }
//             '2' => {
//                 a[i] = '4';
//             }
//             '4' => {
//                 a[i]= '6';
//             }
//             '6' => {
//                 a[i] = '8';
//             }
//             '8' => {
//                 a[i] = '0';
//                 increase_good_digit(a, i+1);
//             }
//             _ => panic!("This should not happen"),
//         }
//     }
// }

// #[test]
// fn test_inc_dig() {
//     let mut a: Vec<char> = vec!['0'];
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['2']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['4']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['6']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['8']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['0', '2']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['2', '2']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['4', '2']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['6', '2']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['8', '2']);
//     increase_good_digit(&mut a, 0);
//     assert_eq!(a, vec!['0', '4']);

//     let mut b = vec!['8','8','8'];
//     increase_good_digit(&mut b, 0);
//     assert_eq!(b, vec!['0', '0','0','2']);

// }

// fn get_next_good_integer(a: &mut Vec<char>) {
//     increase_good_digit(a, 0);
// }


fn main() {
    input! {
         n: usize
    };

    // // res will contain (in the other direction) the digit of the given number
    // let mut res: Vec<char> = vec!['0'];
    // for _i in 0..n-1 {
    //     get_next_good_integer(&mut res);
    // }
    // // We will print the number now
    // for i in (0..res.len()).rev() {
    //     print!("{}", res[i]);
    // }
    // println!();

    let mut digits_5: Vec<u8> = vec![];
    // The key is to substract 1 from n now!!!
    let mut res = n-1;
    while res != 0 {
        digits_5.push((res % 5) as u8 );
        res /= 5;
    }

    if DEBUG {
        println!("digits_5: {:?}", digits_5);
    }

    // Now we need to rebuild the number
    let mut ans: usize = 0;
    for i in 0..digits_5.len() {
        if DEBUG {
            println!("i: {i}, ans= {ans}, to be added: {} ", 2*(digits_5[i] as usize)*((10 as usize).pow(i as u32)));
        }
        ans += 2*(digits_5[i] as usize)*((10 as usize).pow(i as u32));
    }
    println!("{}", ans );

}

Submission Info

Submission Time
Task C - Even Digits
User alixfachin
Language Rust (rustc 1.70.0)
Score 300
Code Size 2744 Byte
Status AC
Exec Time 1 ms
Memory 2076 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 13
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 03_max_00.txt, 04_min_00.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 1896 KiB
00_sample_01.txt AC 1 ms 1800 KiB
00_sample_02.txt AC 1 ms 1896 KiB
01_small_00.txt AC 0 ms 1956 KiB
01_small_01.txt AC 0 ms 1864 KiB
01_small_02.txt AC 0 ms 1928 KiB
02_random_00.txt AC 0 ms 2076 KiB
02_random_01.txt AC 1 ms 1936 KiB
02_random_02.txt AC 0 ms 2072 KiB
02_random_03.txt AC 0 ms 1968 KiB
02_random_04.txt AC 1 ms 1968 KiB
03_max_00.txt AC 1 ms 1868 KiB
04_min_00.txt AC 1 ms 1856 KiB