アルゴリズムと数学 061

https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_ba

ある状態について、次の状態が全て必勝ならその状態は必敗、次の状態に一つでも必敗があれば必勝です。
1は必敗、2は次の状態の1が必敗なので必勝、3は次の状態の2が必勝なので必敗、4~6は次の状態に3が含まれているので必勝、7は次の状態が4~6なので必敗、8~14は次の状態に7が含まれているので必勝、15は次の状態が8~14なので必敗、と考えていくと、2進法で全ての桁が1のときに必敗、そうでないときは必勝であることが分かります。

// Stones Game 2
#![allow(non_snake_case)]


//////////////////// library ////////////////////

fn read<T: std::str::FromStr>() -> T {
    let mut line = String::new();
    std::io::stdin().read_line(&mut line).ok();
    line.trim().parse().ok().unwrap()
}


//////////////////// process ////////////////////

fn is_one_only(N: u64) -> bool {
    if N == 1 {
        true
    }
    else if N % 2 == 0 {
        false
    }
    else {
        is_one_only(N >> 1)
    }
}

fn f(N: u64) {
    if is_one_only(N) {
        println!("Second")
    }
    else {
        println!("First")
    }
}

fn main() {
    let N = read();
    f(N)
}