[Leaf] [TZ9516] 合数封印

9516:归元大帝的「灵阵合数封印」">9516:归元大帝的「灵阵合数封印」

1. 核心逻辑

  • 模型抽象: 构造 1…n1 \dots n 的全排列,使得任意连续 kk 个数之和均为合数。

  • 破局路径:

    • k≥3k \ge 3 的普适证明: 设起始数为 xx,连续 kk 个数的和为 S=k(2x+k−1)2S = \frac{k(2x + k - 1)}{2}。

      • 若 kk 为奇数:由于 2x2x 和 k−1k-1 均为偶数,2x+k−12\frac{2x+k-1}{2} 为整数。则 SS 是 kk 的倍数。由于 k≥3k \ge 3 且 S>kS > k,故 SS 必为合数。

      • 若 kk 为偶数(且 k>2k > 2):则 k2\frac{k}{2} 为整数且 ≥2\ge 2。则 S=k2⋅(2x+k−1)S = \frac{k}{2} \cdot (2x + k - 1)。由于两因子均 ≥2\ge 2,故 SS 必为合数。

      • 结论: k≥3k \ge 3 时,直接输出 1,2,…,n1, 2, \dots, n 即可通过。

    • k=2k = 2 的奇偶隔离: 两个数之和为合数。由于“奇+偶=奇”,极易产生质数(如 2+3=52+3=5)。

      • 核心构造: 采用“奇偶分区”法。将所有偶数放在左侧,所有奇数放在右侧。

      • 能量桥接: 唯一可能产生质数的点在奇偶交界处。选取 (4,5)(4, 5) 作为接头,因为 4+5=94+5=9(合数)。

      • 不变量: 偶数+偶数 ≥6\ge 6(必为合数),奇数+奇数 ≥4\ge 4(除 1+3=41+3=4 外均为合数,而 1+31+3 本身也是合数)。

  • 细节处理: 当 k=2k=2 且 n<5n < 5 时,无法构造出包含 4,54, 5 的接头,判定为无解。

2. 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <bits/stdc++.h>
using namespace std;

void solve( )
{
int n, k;
cin >> n >> k;

if( k == 2 )
{
if( n < 5 )
{
cout << -1 << '\n';
}
else
{
cout << n << '\n';
vector< int > res;

// 1. 放置左侧偶数区(排除接头 4)
for( int i = 2; i <= n; i += 2 )
{
if( i != 4 )
{
res.push_back( i );
}
}

// 2. 放置核心逻辑接头 (4, 5)
res.push_back( 4 );
res.push_back( 5 );

// 3. 放置右侧奇数区(排除接头 5)
for( int i = 1; i <= n; i += 2 )
{
if( i != 5 )
{
res.push_back( i );
}
}

for( int i = 0; i < n; ++ i )
{
cout << res[i];
if( i != n - 1 )
{
cout << " ";
}
}
cout << '\n';
}
}
else
{
// k >= 3 时,利用等差数列求和性质直接输出自然序列
cout << n << "\n";
for( int i = 1; i <= n; ++ i )
{
cout << i;
if( i != n ) cout << " ";
}
cout << "\n";
}
}

int main( )
{
ios::sync_with_stdio( 0 );
cin.tie( 0 );

int t;
cin >> t;
while( t -- )
{
solve( );
}
return 0;
}

3. 复盘

  • 复杂度: O(N)O(N),空间与时间均为线性。

  • 灵感反思: 构造题的本质是“寻找不变量”。

    • 通过数学证明将 k≥3k \ge 3 的复杂情况降维打击,再通过奇偶分类解决 k=2k=2 的冲突点。
  • 关联知识点: 构造策略


[Leaf] [TZ9516] 合数封印
http://miqiu.space/posts/a05d1987/
作者
Miqiu
发布于
2026年1月5日
许可协议