結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-06-21 09:39:38 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 116 ms / 5,000 ms |
| コード長 | 2,680 bytes |
| コンパイル時間 | 2,490 ms |
| コンパイル使用メモリ | 78,640 KB |
| 実行使用メモリ | 39,600 KB |
| 最終ジャッジ日時 | 2024-10-01 15:47:16 |
| 合計ジャッジ時間 | 4,244 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
proconScan proScan = new proconScan(" ");
Integer A = proScan.scanInteger1();
List<Integer> primeNum = new ArrayList<>();
primeNum.add(2);
primeNum.add(3);
Integer i, j;
boolean flag = false;
for (i = 5; i <= A; i++) {
for (j = 2; j * j <= i; j++) {
if (i % j == 0) {
flag = false;
break;
}
flag = true;
}
if (flag) {
primeNum.add(i);
}
}
boolean[] dp = new boolean[A + 2];
dp[0] = true;
dp[1] = true;
for (i = 2; i <= A; i++) {
for (Integer buf : primeNum) {
if (i - buf < 0) {
break;
}
dp[i] |= !dp[i - buf];
if(dp[i]) break;
}
}
System.out.print(dp[A] ? "Win" : "Lose");
proScan.proconEnd();
}
}
class proconScan {
private BufferedReader br;
private String inLine;
private String[] inString;
private Integer idx;
private String splitChar;
public proconScan() {
br = new BufferedReader(new InputStreamReader(System.in));
idx = 0;
splitChar = " ";
}
public proconScan(String split) {
br = new BufferedReader(new InputStreamReader(System.in));
idx = 0;
splitChar = split;
}
public void proconEnd() throws IOException {
// TODO 自動生成されたメソッド・スタブ
br.close();
}
public String scan() throws IOException {
idx = 0;
inLine = br.readLine();
inString = inLine.split(splitChar, 0);
return inLine;
}
public Integer scanInteger1() throws IOException {
scan();
return Integer.parseInt(inString[0]);
}
public String backLine() {
return inLine;
}
public String nextString() {
return inString[idx++];
}
public String[] getString() {
return inString;
}
public Integer nextInteger() {
Integer num;
try {
num = Integer.parseInt(inString[idx++]);
} catch (NumberFormatException e) {
num = null;// TODO: handle exception
}
return num;
}
public Integer[] getInteger() {
Integer[] num = new Integer[this.getLen()];
for (int i = 0; i < this.getLen(); i++) {
num[i] = Integer.parseInt(inString[i]);
}
return num;
}
public Float nextFloat() {
Float num;
try {
num = Float.parseFloat(inString[idx++]);
} catch (NumberFormatException e) {
num = null;// TODO: handle exception
}
return num;
}
public Float[] getFloat() {
Float[] num = new Float[this.getLen()];
for (int i = 0; i < this.getLen(); i++) {
num[i] = Float.parseFloat(inString[i]);
}
return num;
}
public Integer getLen() {
return inString.length;
}
}