F题
原题:传送门
题意:如题目,从一个棋盘的右上角(1,m),每次可以往左,下,左下移动,谁不能移动谁就输了。
思路:
先可以从小范围入手,1x1时先手必败点,一行或者一列的时候奇数点先手必败。
如3x3的图:
L:先手必败 W:先手必胜
L | W | L |
---|---|---|
W | W | W |
L | W | L |
能看出规律当n与m为奇数的时候先手必败。(可画大些找规律也可)
证明的话(由此图扩展)也就是当时操作的人需要走到先手必败的点去才能获胜。
#include<cstdio>
int main()
{
int n,m;
while(scanf("%d %d",&n,&m)&&(n||m))
{
if(n%2!=0&&m%2!=0)
printf("What a pity!\n");
else
printf("Wonderful!\n");
}
return 0;
}
I题
原题:传送门
题意:把一个正整数分解为一个素数一个合数。
思路:
n是奇数分 3与n-3
n是偶数分 2与n-2即可
注意n<=5不行
#include<cstdio>
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
if(n<=5){
printf("-1\n");
continue;
}
if(n&1){
printf("%d %d\n",3,n-3);
}
else
printf("%d %d\n",2,n-2);
}
return 0;
}