P13872题解
题意:
求所有使
简单博弈论题目。
已知
先筛质数,再对每个情况判断是否为必败态,开
时间复杂度
代码:
#include <bits/stdc++.h>
int p[100000], cntp;
std::bitset<100001> isp, isf;
int main()
{
isp[1] = 1;
for (int i(2); i <= 100000; ++i)
{
if (!isp[i])
{
p[++cntp] = i;
}
for (int j(1); j <= cntp && p[j] * i <= 100000; ++j)
{
isp[p[j] * i] = 1;
if (i % p[j] == 0)
break;
}
}
for (int i(2); i <= 100000; ++i)
{
for (int j(1); j <= cntp && p[j] <= i; ++j)
if (!isf[i - p[j]])
{
isf[i] = 1;
break;
}
}
int T;
scanf("%d\n", &T);
while (T--)
{
int n;
scanf("%d", &n);
printf("%d\n", static_cast<int>(isf[n]));
}
return 0;
}