結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
RIGIH
|
| 提出日時 | 2017-09-21 15:24:44 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 6 ms / 5,000 ms |
| コード長 | 1,364 bytes |
| コンパイル時間 | 635 ms |
| コンパイル使用メモリ | 78,064 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-01 16:07:04 |
| 合計ジャッジ時間 | 1,306 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
#include <stdlib.h>
#include <queue>
#include <utility>
#define rep(i,n) for(int i=0;i<n;i++)
#define rrep(i,n) for(int i=n-1;i>=0;i--)
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define ll long long
#define LL long long
#define INF 1000000001
#define mod 1000000007
using namespace std;
int keta(int n,int k){return (n/int(pow(10,double(k-1)))) % 10;} //nの下からk桁目
ll gcd(ll n,ll m){
if(n<m){ll a=m;m=n;n=a;}
ll r=n%m;
while(r!=0){
n=m;
m=r;
r=n%m;
}
return m;
}
ll lcm(ll n,ll m){
return n*m/gcd(n,m);
}
int main(){
int n;
cin>>n;
int *a,*b;
a=new int[n];
b=new int[n+1];
rep(i,n){
a[i]=1;
b[i]=5555;
}
a[0]=0;
int j=2;
while(j*j<=n){
if(a[j-1]==1){
FOR(i,j,n){
if(a[i]==1 && (i+1)%j==0){
a[i]=0;
}
}
}
j++;
}
int c=0;
rep(i,n){
if(a[i]==1)c++;
}
int *d;
d=new int [c];
int e=0;
rep(i,n){
if(a[i]==1){
d[e]=i+1;
e++;
}
}
b[0]=1;
b[1]=1;
b[2]=0;
b[3]=0;
int x=2;
FOR(i,4,n+1){
rep(j,c){
if(i-d[j]<0){
b[i]=0;
break;
}
if(b[i-d[j]]==0){
//cout<<i<<" "<<d[j]<<endl;
b[i]=1;
break;
}
if(j==c-1){
b[i]=0;
}
}
}
if(b[n]==1)cout<<"Win"<<endl;
else cout<<"Lose"<<endl;
delete[]a,b,d;
}
RIGIH