CF1408F.Two Different
提高+/省选-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an integer n.
You should find a list of pairs (x1,y1), (x2,y2), ..., (xq,yq) (1≤xi,yi≤n) satisfying the following condition.
Let's consider some function f:N×N→N (we define N as the set of positive integers). In other words, f is a function that returns a positive integer for a pair of positive integers.
Let's make an array a1,a2,…,an, where ai=i initially.
You will perform q operations, in i-th of them you will:
- assign t=f(axi,ayi) (t is a temporary variable, it is used only for the next two assignments);
- assign axi=t;
- assign ayi=t.
In other words, you need to simultaneously change axi and ayi to f(axi,ayi). Note that during this process f(p,q) is always the same for a fixed pair of p and q.
In the end, there should be at most two different numbers in the array a.
It should be true for any function f.
Find any possible list of pairs. The number of pairs should not exceed 5⋅105.
给你一个整数 n。
你需要找到一个由若干对 (x1,y1)、(x2,y2)、…、(xq,yq)(其中 1≤xi,yi≤n)组成的列表,满足如下条件:
考虑某个函数 f:N×N→N(这里我们将 N 定义为正整数集合)。换言之,f 是一个将正整数对映射为正整数的函数。
构造一个数组 a1,a2,…,an,初始时 ai=i。
你将执行 q 次操作;在第 i 次操作中,你将:
- 令 t=f(axi,ayi)(t 是一个临时变量,仅用于接下来的两次赋值);
- 将 axi 赋值为 t;
- 将 ayi 赋值为 t。
换句话说,你需要同时将 axi 和 ayi 更新为 f(axi,ayi)。注意:在整个过程中,对于固定的 p 和 q,f(p,q) 的值始终相同。
最终,数组 a 中至多包含两个不同的数值。
该性质必须对任意函数 f 均成立。
请找出任意一个满足条件的数对列表。数对总数不得超过 5⋅105。
输入格式
The single line contains a single integer n (1≤n≤15000).
单行包含一个整数 n(1≤n≤15000)。
输出格式
In the first line print q (0≤q≤5⋅105) — the number of pairs.
In each of the next q lines print two integers. In the i-th line print xi, yi (1≤xi,yi≤n).
The condition described in the statement should be satisfied.
If there exists multiple answers you can print any of them.
第一行输出 q(0≤q≤5⋅105)—— 表示数对的个数。
接下来的 q 行中,每行输出两个整数。第 i 行输出 xi、yi(1≤xi,yi≤n)。
题目描述中的条件必须满足。
若存在多个合法答案,输出任意一个即可。
输入输出样例
输入#1
3
输出#1
1 1 2
输入#2
4
输出#2
2 1 2 3 4
说明/提示
In the first example, after performing the only operation the array a will be [f(a1,a2),f(a1,a2),a3]. It will always have at most two different numbers.
In the second example, after performing two operations the array a will be [f(a1,a2),f(a1,a2),f(a3,a4),f(a3,a4)]. It will always have at most two different numbers.
在第一个例子中,执行唯一一次操作后,数组 a 将变为 [f(a1,a2),f(a1,a2),a3]。该数组始终至多包含两个不同的数。
在第二个例子中,执行两次操作后,数组 a 将变为 [f(a1,a2),f(a1,a2),f(a3,a4),f(a3,a4)]。该数组始终至多包含两个不同的数。
输入解题思路,AI测评打分。不知道怎么写?