#P1070. 黑板择数

    ID: 82 传统题 1000ms 256MiB 尝试: 0 已通过: 0难度: 普及+/提高− ← 上一题 下一题 → 随机一题 上传者: 标签 状态压缩 动态规划 搜索 图论
显示设置

黑板择数

题目背景

数学兴趣小组在黑板上从 11 写到 nn。下课前组长想挑出其中一些数抄进笔记本,但她定了一条规矩:笔记本里任意两个不同的数,差不许是某个正整数的平方。她想抄得尽量多。

题目描述

给定正整数 nn。请从 1,2,…,n1, 2, \dots, n 中选出尽可能多的数组成集合 SS,使得对 SS 中任意两个不同的数 x,yx, y,∣x−y∣|x - y| 都不是完全平方数(即不存在正整数 kk 使 ∣x−y∣=k2|x - y| = k^2)。

请求出 ∣S∣|S| 的最大值。

输入格式

一行一个整数 nn。

输出格式

一行一个整数,表示最多能选出的数的个数。

输入输出样例 #1

输入 #1

3

输出 #1

2

输入输出样例 #2

输入 #2

6

输出 #2

3

输入输出样例 #3

输入 #3

1

输出 #3

1

说明

样例解释

样例 1:11 与 22 之差为 1=121 = 1^2,22 与 33 之差也是 11,都不能同时选;11 与 33 之差为 22,可以同时选。故最多选 22 个。

样例 2:11 与 22、22 与 33、33 与 44、44 与 55、55 与 66 之差都是 11,11 与 55、22 与 66 之差都是 44。可以选 1,3,61, 3, 6,两两之差不属于 {1,4}\{1, 4\};选 44 个数总会撞上这些差,故答案为 33。

样例 3:只写了一个数,选上它即可。

数据范围

  • 对于 30%30\% 的数据,1≤n≤81 \le n \le 8;
  • 对于 60%60\% 的数据,1≤n≤141 \le n \le 14;
  • 对于 100%100\% 的数据,1≤n≤201 \le n \le 20。