結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
mottodora
|
| 提出日時 | 2016-10-30 10:08:01 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,187 bytes |
| コンパイル時間 | 12,613 ms |
| コンパイル使用メモリ | 392,640 KB |
| 実行使用メモリ | 8,868 KB |
| 最終ジャッジ日時 | 2024-11-24 23:33:00 |
| 合計ジャッジ時間 | 55,850 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 TLE * 6 |
コンパイルメッセージ
warning: unused variable: `primes`
--> src/main.rs:34:9
|
34 | let primes = eratosthenes(n);
| ^^^^^^ help: if this is intentional, prefix it with an underscore: `_primes`
|
= note: `#[warn(unused_variables)]` on by default
warning: function `max_prime` is never used
--> src/main.rs:18:4
|
18 | fn max_prime(n: i32, primes: &Vec<i32>) -> i32 {
| ^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
ソースコード
fn getline() -> String{
let mut ret = String::new();
std::io::stdin().read_line(&mut ret).ok();
return ret;
}
fn eratosthenes(n: i32) -> Vec<i32> {
let mut v: Vec<i32> = (2..n+1).collect();
let mut i:i32 = 0;
while i < v.len() as i32 {
let a = v[i as usize];
v.retain(|&x| x< a+1 || x % a !=0);
i+=1;
}
v
}
fn max_prime(n: i32, primes: &Vec<i32>) -> i32 {
let mut i: i32 = 0;
let l = primes.len() as i32;
if n >= primes[(l-1) as usize] {
primes[(l-1) as usize]
}
else {
while primes[(i+1) as usize] <= n {
i += 1;
}
primes[i as usize]
}
}
fn main() {
let n: i32 = getline().trim().parse().unwrap();
let primes = eratosthenes(n);
let mut dp = [false; 10001];
for i in 4..(n+1) {
//dp[i as usize] = !dp[(i-max_prime(i-2, &primes)) as usize];
let mut tmp = false;
for j in eratosthenes(i) {
if i - j > 1 {
tmp |= !dp[(i-j) as usize];
}
}
dp[i as usize] = tmp;
}
if dp[n as usize] {
println!("Win");
}
else {
println!("Lose");
}
}
mottodora