比赛 |
20120721 |
评测结果 |
AAAAAAAEEE |
题目名称 |
取火柴 |
最终得分 |
70 |
用户昵称 |
Truth.Cirno |
运行时间 |
0.401 s |
代码语言 |
C++ |
内存使用 |
5.07 MiB |
提交时间 |
2012-07-21 10:01:48 |
显示代码纯文本
#include <cstdio>
using namespace std;
int cy[1001],ynum[1001][1001];
bool lose[1001][1001];
int main(void)
{
freopen("bet.in","r",stdin);
freopen("bet.out","w",stdout);
int i,j,k,n,x,y,temp;
bool found;
for (i=1;i<=1000;i++)
{
ynum[i][cy[i]++]=i;
if (i!=1)
ynum[i][cy[i]++]=1;
for (j=2;j*j<=i;j++)
if (i%j==0)
{
ynum[i][cy[i]++]=j;
if (j*j!=i)
ynum[i][cy[i]++]=i/j;
}
}
for (i=1;i<=1000;i++)
for (j=i;j<=1000;j++)
{
found=false;
for (k=0;!found&&k<cy[i];k++)
{
y=j-ynum[i][k];
if (y>=0)
{
x=i;
if (x>y)
{
temp=x;
x=y;
y=temp;
}
if (lose[x][y])
{
found=true;
}
}
else
{
continue;
}
}
for (k=0;!found&&k<cy[j];k++)
{
x=i-ynum[j][k];
if (x>=0)
{
y=j;
if (x>y)
{
temp=x;
x=y;
y=temp;
}
if (lose[x][y])
{
found=true;
}
}
else
{
continue;
}
}
if (!found)
lose[i][j]=true;
}
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
if (x>y)
{
temp=x;
x=y;
y=temp;
}
if (lose[x][y])
printf("No\n");
else
printf("Yes\n");
}
return(0);
}