1 //题意:S 和 O 二人玩游戏 。N颗石头,M个数,每次拿 M[i]个石头(i>0 && i<m) ,谁拿到最后一个谁赢。
2
3 // 定义f[i]为还剩i颗石头时的胜负情况 ,若S胜利,则记 1 ,
4 #include<cstdio>
5 #include<cstring>
6 #include<algorithm>
7 using namespace std;
8 int f[1000005],a[11];
9 int main()
10 {
11 int n,m;
12 while(scanf("%d",&n)!=EOF)
13 {
14 scanf("%d",&m);
15 for(int i=0;i<m;i++)
16 scanf("%d",&a[i]);
17 f[0]=0;
18 for(int i=1;i<=n;i++)
19 {
20 f[i]=0;
21 for(int j=0;j<m;j++)
22 {
23 if(i>=a[j] && f[i-a[j]]==0)
24 {
25 f[i]=1; break;
26 }
27 }
28 }
29 if(f[n]) printf("Stan wins\n");
30 else printf("Ollie wins\n");
31 }
32 return 0;
33 }