結果
| 問題 |
No.781 円周上の格子点の数え上げ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-01-15 16:57:11 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 131 ms / 2,000 ms |
| コード長 | 1,567 bytes |
| コンパイル時間 | 16,082 ms |
| コンパイル使用メモリ | 379,076 KB |
| 実行使用メモリ | 40,960 KB |
| 最終ジャッジ日時 | 2024-06-25 05:51:30 |
| 合計ジャッジ時間 | 13,133 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 21 |
ソースコード
#![allow(unused_imports)]
#![allow(unused_macros)]
use std::cmp::{ min, max };
macro_rules! ewriteln {
($($args:expr),*) => { let _ = writeln!(&mut std::io::stderr(), $($args),*); };
}
macro_rules! trace {
($x:expr) => { ewriteln!(">>> {} = {:?}", stringify!($x), $x) };
($($xs:expr),*) => { trace!(($($xs),*)) }
}
macro_rules! put {
($x:expr) => { println!("{}", $x) };
($x:expr, $($xs:expr),*) => { print!("{} ", $x); put!($($xs),*) }
}
fn main() {
let mut sc = Scanner::new();
let r0: u64 = sc.cin();
let r1: u64 = sc.cin();
let mut counts = vec![0; 10000002];
for x in 0.. {
if x * x > r1 { break }
for y in 1.. {
if y * y > r1 { break }
let r = x*x+y*y;
if r0 <= r && r <= r1 {
counts[r as usize] += 1;
}
}
}
// for i in 1..30 { trace!(i, counts[i]); }
put!(4 * counts.iter().max().unwrap());
}
use std::io::{self, Write};
use std::str::FromStr;
use std::collections::VecDeque;
struct Scanner { stdin: io::Stdin, buffer: VecDeque<String>, }
impl Scanner {
fn new() -> Scanner { Scanner { stdin: io::stdin(), buffer: VecDeque::new() } }
fn cin<T: FromStr>(&mut self) -> T {
while self.buffer.len() == 0 {
let mut line = String::new();
let _ = self.stdin.read_line(&mut line);
for w in line.split_whitespace() {
self.buffer.push_back(String::from(w));
}
}
self.buffer.pop_front().unwrap().parse::<T>().ok().unwrap()
}
}