Pagini recente » Cod sursa (job #2863223) | Cod sursa (job #2440756) | Cod sursa (job #320514) | Cod sursa (job #149399) | Cod sursa (job #2474280)
use std::fs::File;
use std::io::{BufReader, BufRead, BufWriter, Write};
fn fractii(n: i64) -> i32 {
// let mut prim: [i64; 1000004] = [0; 1000004];
let mut prim=vec![0;(n+1) as usize];
for i in 1..=n {
prim[i as usize] = (i - 1) as i32;
}
let mut sol: i32 = 0;
let n: usize = n as usize;
for i in 2..=n {
sol += prim[i];
let mut j = i + i;
while j <= n {
prim[j] -= prim[i];
j += i;
}
}
sol * 2 + 1
}
//fn read0(path: &str) -> impl Iterator<Item=i64> {
// let br = BufReader::new(File::open(path)
// .expect(&format!("Couldn't open {} file", path)));
//
// br.lines()
// .map(|line| line.expect("couldn't read line"))
// .flat_map(|line| {
// line.split_whitespace()
// .map(|num| num.parse().expect("not a number"))
// .collect::<Vec<i64>>()
// })
//}
fn read(path: &str) -> i64 {
let br = BufReader::new(File::open(path)
.expect(&format!("Couldn't open {} file", path)));
match br.lines().next() {
Some(c) => {
let c = c.unwrap();
return c.parse::<i64>().unwrap();
}
_ => { panic!("not a number") }
}
}
fn main() {
let mut bw = BufWriter::new(File::create("fractii.out")
.expect(&format!("Couldn't create output file")));
write!(bw, "{}", fractii(read("fractii.in")));
}