Submission #63213542


Source Code Expand

#![allow(unused)]

fn main() {
    let inp = readv::<u64>();
    let (n, m) = (inp[0] as usize, inp[1]);
    let arr = readv::<u64>();

    // x = a[0] * (p[0] + 0.5)
    // x = a[1] * (p[1] + 0.5)
    // ...
    // =>
    // x = (a[0] / 2) * (2 * p[0] + 1)
    // x = (a[1] / 2) * (2 * p[1] + 1)
    // ...
    // => x is lcm(a[i] / 2) and (x / (a[i] / 2)) is odd

    let x = arr.iter().fold(1, |acc, x| lcm(acc, *x / 2));
    if x > m {
        println!("0");
        return;
    }
    for a in arr {
        if (x / (a / 2)) % 2 == 0 {
            println!("0");
            return;
        }
    }
    // number of multiples of x that is odd in 1..=M
    // = (number of multiples of x in 1..=M) - (number of multiples of 2x in 1..=M)
    let ans = m / x - m / (2 * x);
    println!("{}", ans);
}

fn gcd(a: u64, b: u64) -> u64 {
    if b == 0 {
        a
    } else {
        gcd(b, a % b)
    }
}

fn lcm(a: u64, b: u64) -> u64 {
    (a / gcd(a, b)).saturating_mul(b)
}

fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}

fn readv<T: std::str::FromStr>() -> Vec<T> {
    read::<String>()
        .split_ascii_whitespace()
        .map(|t| t.parse().ok().unwrap())
        .collect()
}

fn reads() -> Vec<char> {
    read::<String>().chars().collect()
}

fn mapv<T, S, F: Fn(&T) -> S>(arr: &Vec<T>, f: F) -> Vec<S> {
    arr.iter().map(f).collect()
}

fn join<T: ToString>(arr: &[T], sep: &str) -> String {
    arr.iter()
        .map(|x| x.to_string())
        .collect::<Vec<String>>()
        .join(sep)
}

Submission Info

Submission Time
Task D - Semi Common Multiple
User amoshuangyc
Language Rust (rustc 1.70.0)
Score 400
Code Size 1689 Byte
Status AC
Exec Time 11 ms
Memory 4072 KiB

Judge Result

Set Name Sample All after_contest
Score / Max Score 0 / 0 400 / 400 0 / 0
Status
AC × 3
AC × 90
AC × 1
Set Name Test Cases
Sample s1.txt, s2.txt, s3.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, 65.txt, 66.txt, 67.txt, 68.txt, 69.txt, 70.txt, 71.txt, 72.txt, 73.txt, 74.txt, 75.txt, 76.txt, 77.txt, 78.txt, 79.txt, 80.txt, 81.txt, 82.txt, 83.txt, 84.txt, 85.txt, 86.txt, 87.txt, 88.txt, 89.txt, 90.txt, 91.txt, s1.txt, s2.txt, s3.txt
after_contest after_contest_01
Case Name Status Exec Time Memory
01.txt AC 1 ms 2028 KiB
02.txt AC 1 ms 2416 KiB
03.txt AC 0 ms 1868 KiB
04.txt AC 2 ms 2676 KiB
05.txt AC 0 ms 1920 KiB
06.txt AC 1 ms 2008 KiB
07.txt AC 0 ms 1888 KiB
08.txt AC 1 ms 1988 KiB
09.txt AC 0 ms 1884 KiB
10.txt AC 2 ms 2452 KiB
11.txt AC 0 ms 1888 KiB
12.txt AC 2 ms 2636 KiB
13.txt AC 1 ms 1896 KiB
14.txt AC 4 ms 3872 KiB
15.txt AC 0 ms 1916 KiB
16.txt AC 1 ms 1960 KiB
17.txt AC 0 ms 1824 KiB
18.txt AC 2 ms 2476 KiB
19.txt AC 0 ms 1896 KiB
20.txt AC 2 ms 2500 KiB
21.txt AC 1 ms 2024 KiB
22.txt AC 3 ms 3140 KiB
23.txt AC 0 ms 2032 KiB
24.txt AC 3 ms 3096 KiB
25.txt AC 0 ms 1756 KiB
26.txt AC 3 ms 3792 KiB
27.txt AC 0 ms 1904 KiB
28.txt AC 2 ms 2444 KiB
29.txt AC 1 ms 1920 KiB
30.txt AC 2 ms 2552 KiB
31.txt AC 0 ms 2028 KiB
32.txt AC 4 ms 3592 KiB
33.txt AC 0 ms 1888 KiB
34.txt AC 1 ms 2164 KiB
35.txt AC 0 ms 1852 KiB
36.txt AC 1 ms 2284 KiB
37.txt AC 1 ms 1892 KiB
38.txt AC 3 ms 2760 KiB
39.txt AC 0 ms 1892 KiB
40.txt AC 1 ms 2204 KiB
41.txt AC 0 ms 1888 KiB
42.txt AC 3 ms 3368 KiB
43.txt AC 0 ms 1868 KiB
44.txt AC 3 ms 3384 KiB
45.txt AC 1 ms 1868 KiB
46.txt AC 1 ms 1952 KiB
47.txt AC 0 ms 2024 KiB
48.txt AC 3 ms 3200 KiB
53.txt AC 1 ms 1884 KiB
54.txt AC 3 ms 3108 KiB
55.txt AC 0 ms 2016 KiB
56.txt AC 1 ms 2040 KiB
57.txt AC 0 ms 1900 KiB
58.txt AC 2 ms 2496 KiB
59.txt AC 0 ms 1956 KiB
60.txt AC 2 ms 2388 KiB
61.txt AC 0 ms 1856 KiB
62.txt AC 1 ms 1916 KiB
63.txt AC 1 ms 2020 KiB
64.txt AC 3 ms 3616 KiB
65.txt AC 0 ms 1888 KiB
66.txt AC 3 ms 3324 KiB
67.txt AC 0 ms 1948 KiB
68.txt AC 2 ms 2424 KiB
69.txt AC 0 ms 1864 KiB
70.txt AC 0 ms 1864 KiB
71.txt AC 1 ms 1956 KiB
72.txt AC 6 ms 2688 KiB
73.txt AC 1 ms 2156 KiB
74.txt AC 5 ms 2516 KiB
75.txt AC 1 ms 2404 KiB
76.txt AC 4 ms 3700 KiB
77.txt AC 1 ms 2380 KiB
78.txt AC 11 ms 3864 KiB
79.txt AC 1 ms 2172 KiB
80.txt AC 3 ms 3660 KiB
81.txt AC 4 ms 4056 KiB
82.txt AC 4 ms 3988 KiB
83.txt AC 1 ms 2036 KiB
84.txt AC 3 ms 3632 KiB
85.txt AC 1 ms 1892 KiB
86.txt AC 0 ms 1880 KiB
87.txt AC 0 ms 1912 KiB
88.txt AC 2 ms 2928 KiB
89.txt AC 3 ms 3352 KiB
90.txt AC 3 ms 3016 KiB
91.txt AC 4 ms 4072 KiB
after_contest_01 AC 0 ms 1896 KiB
s1.txt AC 1 ms 1884 KiB
s2.txt AC 0 ms 1952 KiB
s3.txt AC 0 ms 1864 KiB