专栏文章
P13872题解
P13872题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio37334
- 此快照首次捕获于
- 2025/12/02 12:37 3 个月前
- 此快照最后确认于
- 2025/12/02 12:37 3 个月前
题意:
求所有使 为 的整数 .
简单博弈论题目。
已知 和 为必败态. 由博弈论的基本原理可知,当 使得 时, ;否则 .
先筛质数,再对每个情况判断是否为必败态,开 的数组存储,然后问一次答一次即可.
时间复杂度 ,有些吃紧,也过了.
代码:
CPP#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;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...