結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-05-10 01:27:36 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 7 ms / 5,000 ms |
| コード長 | 1,143 bytes |
| コンパイル時間 | 21,117 ms |
| コンパイル使用メモリ | 396,204 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-05-10 01:28:02 |
| 合計ジャッジ時間 | 22,369 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
/*
* Author: srtry
* Created: 2025-05-05T06:37:08+09:00
* Coding: utf-8-unix
*/
use proconio::input;
use std::io::{stdout,Write,BufWriter};
fn primes_leq(&n:&usize) -> Vec<usize> {
let mut primes:Vec<usize> = Vec::new();
let mut is_prime:Vec<bool> = vec![true;n+1];
is_prime[0] = false;
is_prime[1] = false;
for i in 2..=n {
if is_prime[i] {
primes.push(i);
for j in i..=n/i {
is_prime[i*j] = false;
}
}
}
return primes;
}
fn main() {
input!{
n:usize
}
let out = stdout();
let mut out = BufWriter::new(out.lock());
let primes = primes_leq(&n);
let mut is_winnum:Vec<bool> = vec![true;n+1];
let mut win:bool = false;
for i in 2..=n as usize {
win = false;
for &prime in primes.iter() {
if i<prime {
break;
}
if !is_winnum[i-prime] {
win = true;
}
}
is_winnum[i] = win.clone();
}
let ans:&str = if win {"Win"} else {"Lose"};
write!(out, "{}", ans).unwrap();
}