提出 #49305448


ソースコード 拡げる

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

}

提出情報

提出日時
問題 C - Even Digits
ユーザ alixfachin
言語 Rust (rustc 1.70.0)
得点 300
コード長 2744 Byte
結果 AC
実行時間 1 ms
メモリ 2076 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 300 / 300
結果
AC × 3
AC × 13
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
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