提出 #29842175


ソースコード 拡げる

use proconio::input;

fn gcd(n: usize, m: usize) -> usize {
    if m == 0 {
        n
    } else {
        gcd(m, n % m)
    }
}

fn lcm(n: usize, m: usize) -> usize {
    n * m / gcd(n, m)
}

fn main() {
    input! {
        n: usize,
        k: usize,
        v: [usize; k],
    };

    let mut ans = 0_i64;
    for bits in 1..1 << k {
        let mut is_even = true;
        let mut x = 1_usize;
        for (i, v_i) in v.iter().copied().enumerate() {
            if ((bits >> i) & 1) == 1 {
                x = lcm(x, v_i);
                is_even = !is_even;
            }
        }
        ans += if is_even { -1 } else { 1 } * ((n / x) as i64);
    }

    println!("{}", ans);
}

提出情報

提出日時
問題 068 - Number of Multiples 2
ユーザ bouzuya
言語 Rust (1.42.0)
得点 1000
コード長 686 Byte
結果 AC
実行時間 6 ms
メモリ 2168 KiB

ジャッジ結果

セット名 All
得点 / 配点 1000 / 1000
結果
AC × 33
セット名 テストケース
All in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, sample_01, sample_02, sample_03
ケース名 結果 実行時間 メモリ
in01 AC 6 ms 2016 KiB
in02 AC 1 ms 2020 KiB
in03 AC 2 ms 2132 KiB
in04 AC 2 ms 1972 KiB
in05 AC 1 ms 2012 KiB
in06 AC 2 ms 2100 KiB
in07 AC 2 ms 2036 KiB
in08 AC 2 ms 2080 KiB
in09 AC 2 ms 2136 KiB
in10 AC 1 ms 2128 KiB
in11 AC 3 ms 1972 KiB
in12 AC 2 ms 2088 KiB
in13 AC 1 ms 1968 KiB
in14 AC 1 ms 2072 KiB
in15 AC 1 ms 2104 KiB
in16 AC 2 ms 2028 KiB
in17 AC 1 ms 2040 KiB
in18 AC 2 ms 2072 KiB
in19 AC 2 ms 1976 KiB
in20 AC 1 ms 2168 KiB
in21 AC 2 ms 2044 KiB
in22 AC 2 ms 2076 KiB
in23 AC 2 ms 2056 KiB
in24 AC 2 ms 2080 KiB
in25 AC 1 ms 2112 KiB
in26 AC 1 ms 1956 KiB
in27 AC 1 ms 2104 KiB
in28 AC 1 ms 2096 KiB
in29 AC 2 ms 2016 KiB
in30 AC 2 ms 2080 KiB
sample_01 AC 1 ms 2096 KiB
sample_02 AC 1 ms 2004 KiB
sample_03 AC 5 ms 2056 KiB