結果
問題 | No.316 もっと刺激的なFizzBuzzをください |
ユーザー |
|
提出日時 | 2016-03-26 01:30:31 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 1,342 bytes |
コンパイル時間 | 12,447 ms |
コンパイル使用メモリ | 393,732 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-11-21 12:19:32 |
合計ジャッジ時間 | 14,011 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 |
コンパイルメッセージ
warning: unused import: `std::fmt` --> src/main.rs:3:5 | 3 | use std::fmt; | ^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
ソースコード
use std::io;use std::str::FromStr;use std::fmt;fn read_line() -> String {let mut ret = String::new();io::stdin().read_line(&mut ret).expect("read_line failed");ret.trim().to_string()}fn read_one<F>() -> F where F: FromStr {// FromStr has type Error in its struct.// https://doc.rust-lang.org/std/str/trait.FromStr.html// String#parse return Result<F, F::Err>,// and unwrap is only available in Result<T, Result>match read_line().parse::<F>() {Ok(v) => v,Err(_) => panic!("failed to parse.")}}fn read_many<F>() -> Vec<F> where F: FromStr {read_line().split(' ').map(|s| match s.parse::<F>() {Ok(v) => v,Err(_) => panic!("failed to parse.")}).collect()}// -----------------------------------------------------------------------------// -----------------------------------------------------------------------------fn gcd(x: i64, y: i64) -> i64 {if y == 0 {x} else {gcd(y, x%y)}}fn lcm(x: i64, y: i64) -> i64 {x * y / gcd(x, y)}fn main() {let n: i64 = read_one();let v: Vec<i64> = read_many();let (a, b, c) = (v[0], v[1], v[2]);let ans = (n/a)+(n/b)+(n/c)-(n/lcm(a,b))-(n/lcm(b,c))-(n/lcm(c,a))+(n/lcm(lcm(a,b),c));println!("{}", ans)}