結果

問題 No.7 プライムナンバーゲーム
ユーザー mottodoramottodora
提出日時 2016-10-30 10:08:01
言語 Rust
(1.77.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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
8,740 KB
testcase_01 AC 1 ms
8,612 KB
testcase_02 TLE -
testcase_03 AC 185 ms
8,736 KB
testcase_04 AC 28 ms
8,740 KB
testcase_05 AC 28 ms
6,820 KB
testcase_06 AC 1,634 ms
6,816 KB
testcase_07 AC 926 ms
6,820 KB
testcase_08 AC 293 ms
6,820 KB
testcase_09 AC 3,005 ms
6,820 KB
testcase_10 AC 1 ms
6,820 KB
testcase_11 AC 939 ms
6,820 KB
testcase_12 TLE -
testcase_13 TLE -
testcase_14 TLE -
testcase_15 TLE -
testcase_16 TLE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
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

ソースコード

diff #

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");
    }
}
0