0%

2026牛客暑期多校 7—— Problem H. Modulo Triples

题目大意

题目描述

给定一个正整数 NN

你需要将集合 {0,1,2,,3N1}\{0,1,2,\ldots,3N-1\} 划分为 NN 个有序三元组 (x1,y1,z1),(x2,y2,z2),,(xN,yN,zN)(x_1,y_1,z_1),(x_2,y_2,z_2),\ldots,(x_N,y_N,z_N)

这些三元组必须同时满足以下所有条件:

  1. 集合 {0,1,2,,3N1}\{0,1,2,\ldots,3N-1\} 中的每个整数在所有三元组中恰好出现一次。等价地说,序列 x1,y1,z1,x2,y2,z2,,xN,yN,zNx_1,y_1,z_1,x_2,y_2,z_2,\ldots,x_N,y_N,z_N 必须是集合 {0,1,2,,3N1}\{0,1,2,\ldots,3N-1\} 的一个排列。

  2. 对于每个 i{1,2,,N}i \in \{1,2,\ldots,N\},都必须满足 zi>0z_i>0ximodzi=yix_i \bmod z_i = y_i

其中,amodba \bmod b 表示非负整数 aa 除以正整数 bb 所得的余数。

可以证明,在给定的数据范围内,对于任意 NN 至少存在一种合法的构造。你只需要输出任意一种合法的构造即可。

输入格式

输入仅包含一行一个正整数 NN1N2×1051 \le N \le 2\times 10^5)。

输出格式

输出 NN 行。

ii 行需要包含三个整数 xi,yi,zix_i, y_i, z_i,表示第 ii 个有序三元组。

对于每个 i{1,2,,N}i \in \{1,2,\ldots,N\},你的输出必须满足 0xi,yi,zi<3N0 \le x_i, y_i, z_i < 3Nzi>0z_i > 0ximodzi=yix_i \bmod z_i = y_i

此外,输出的序列 x1,y1,z1,x2,y2,z2,,xN,yN,zNx_1,y_1,z_1,x_2,y_2,z_2,\ldots,x_N,y_N,z_N 必须是集合 {0,1,2,,3N1}\{0,1,2,\ldots,3N-1\} 的一个排列。

如果存在多种合法的构造,输出任意一种即可。

样例

1
3
1
2
3
5 0 1
7 3 4
8 2 6

样例输出给出了三个有序三元组:(5,0,1)(5,0,1)(8,2,6)(8,2,6),以及 (7,3,4)(7,3,4)

它们分别满足等式:5mod1=05 \bmod 1 = 08mod6=28 \bmod 6 = 27mod4=37 \bmod 4 = 3

此外,这些三元组中出现的所有整数恰好为 0,1,2,3,4,5,6,7,80,1,2,3,4,5,6,7,8,这正是集合 {0,1,,3N1}\{0,1,\ldots,3N-1\} 中的所有整数。

思路讲解

AC代码

心路历程(WA,TLE,MLE……)