結果
| 問題 | No.526 フィボナッチ数列の第N項をMで割った余りを求める | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2024-01-13 14:16:53 | 
| 言語 | Rust (1.83.0 + proconio) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 75 ms / 2,000 ms | 
| コード長 | 1,166 bytes | 
| コンパイル時間 | 13,994 ms | 
| コンパイル使用メモリ | 376,760 KB | 
| 実行使用メモリ | 40,960 KB | 
| 最終ジャッジ日時 | 2024-09-28 01:24:27 | 
| 合計ジャッジ時間 | 15,342 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 12 | 
コンパイルメッセージ
warning: unused macro definition: `print`
  --> src/main.rs:10:18
   |
10 |     macro_rules! print(($($tt:tt)*) => { write!(out, $($tt)*).ok(); });
   |                  ^^^^^
   |
   = note: `#[warn(unused_macros)]` on by default
            
            ソースコード
#![allow(non_snake_case)]
use std::io::{BufWriter, stdout, Write};
fn main() {
    let mut scan = Scanner::default();
    let out = &mut BufWriter::new(stdout());
    macro_rules! println(($($tt:tt)*) => { writeln!(out, $($tt)*).ok(); });
    macro_rules! print(($($tt:tt)*) => { write!(out, $($tt)*).ok(); });
    macro_rules! input(($t:ty) => { scan.next::<$t>() }; ($t:ty; $n:expr) => { (0..$n).map(|_| input!($t)).collect::<Vec<_>>() });
    let N = input!(usize);
    let M = input!(usize);
    let mut dp = vec![0; N];
    dp[1] = 1;
    for i in 2..N {
        dp[i] = dp[i - 1] + dp[i - 2];
        dp[i] %= M;
    }
    println!("{}", dp[N - 1]);
}
#[derive(Default)]
struct Scanner {
    buffer: Vec<String>
}
impl Scanner {
    fn next<T: std::str::FromStr>(&mut self) -> T {
        loop {
            if let Some(token) = self.buffer.pop() {
                return token.parse().ok().expect("Failed parse");
            }
            let mut input = String::new();
            std::io::stdin().read_line(&mut input).expect("Failed read");
            self.buffer = input.split_whitespace().rev().map(String::from).collect();
        }
    }
}
            
            
            
        