hdu 2147 kiki's game
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<stdio.h> #include<iostream> using namespace std; bool map[2001][2001];//1 P 0 N; int main() { int i,j,k; map[1][1]=1; for(i=2;i<=2000;i++) { if(map[i-1][1]) map[i][1]=0; else map[i][1]=1; for(j=2;j<i;j++){ if(!map[i][j-1]&&!map[i-1][j-1]&&!map[i-1][j]) map[i][j]=1; else map[i][j]=0; } if(map[1][i-1]) map[1][i]=0; else map[1][i]=1; for(j=2;j<i;j++){ if(!map[j-1][i]&&!map[j-1][i-1]&&!map[j][i-1]) map[j][i]=1; else map[j][i]=0; } if(!map[i][i-1]&&!map[i-1][i-1]&&!map[i-1][i]) map[i][i]=1; else map[i][i]=0; } int M,N; for(i=1;i<=10;i++){ for(j=1;j<=10;j++) printf("%c ",map[i][j]?'P':'N'); printf("\n"); } while(scanf("%d%d",&M,&N)&&M&&N){ if(map[M][N]) printf("What a pity!\n"); else printf("Wonderful!\n"); } return 0; } //● 一个点是P点, 当且仅当他所有的有向邻接点是N点(N点先手胜) //● 一个点是N点, 当且仅当有一个有向邻接点是P点(P点先手败)
#include<stdio.h> int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0)break; if(n&1 && m&1)printf("What a pity!\n"); else printf("Wonderful!\n"); } return 0; }