Cod sursa(job #2474267)

Utilizator Rufus007Marincia Catalin Rufus007 Data 14 octombrie 2019 22:05:19
Problema Fractii Scor 90
Compilator rs Status done
Runda Arhiva de probleme Marime 0.87 kb
use std::fs::File;
use std::io::{BufReader, BufRead, BufWriter, Write};

fn fractii(n: i64) -> i64 {
    let mut prim: [i64; 1000004] = [0; 1000004];

    for i in 1..=n {
        prim[i as usize] = i - 1;
    }
    let mut sol: i64 = 0;
    for i in 2..=n {
        sol += prim[i as usize];

        let mut j = i + i;
        while j <= n {
            prim[j as usize] -= prim[i as usize];
            j += i;
        }
    }
    sol * 2 + 1
}

fn read(path: &str) -> i64 {
    let br = BufReader::new(File::open(path)
        .expect(&format!("Couldn't open {} file", path)));
    if let Some(c) = br.lines().next() {
        let c = c.unwrap();
       return c.parse::<i64>().unwrap();
    }
    0
}

fn main() {
    let mut bw = BufWriter::new(File::create("fractii.out")
        .expect(&format!("Couldn't create output file")));
        write!(bw, "{}", fractii(read("fractii.in")));

}