結果
| 問題 | 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)
}