题解:AT_arc198_a [ARC198A] I hate 1

· · 题解

题意解析:

由题意可知:集合里的元素 S_i\ge 1\le N 的。

而其中:(x + 1) \bmod x = 1。也就是说,在创建集合 S 时,不能选择相邻的数。

那么想要数量最多,那么就需要选择间隔为 2 的数。

所以我们选择偶数数列。因为选择奇数数列,就不能选择 1,因为 1 \bmod x = 1 对于任何 x 都成立。那么当 n 为偶数时,奇数数列就会比偶数数列少一个数。

而当 n 为奇数时,奇数数列和偶数数列数量一样多,但我们可以发现,有一些奇数模奇数也等于 1,比如 11 \bmod 5 = 1,所以偶数数列是最优解。

CODE:

#include<cstdio>
int main() {
    int n;
    scanf("%d",&n);
    if(n==1) printf("1\n1");//特判 n=1 的情况
    else{
        int a=n/2;
        printf("%d\n",a);
        for(int w=1;w<=a;w++) printf("%d ",2*w);
    }
    printf("\n");
    return 0;
}