CF432C Prime Swaps

题目描述

给定一个数组 $ a[1],a[2],...,a[n] $,包含了 $ 1 $ 到 $ n $ 的互不相同的整数。你的任务是通过以下操作将该数组按升序排序(你可能需要多次应用该操作): - 选择两个下标 $ i $ 和 $ j $($ 1 \leq i < j \leq n $,且 $ (j-i+1) $ 是一个质数); - 交换第 $ i $ 和第 $ j $ 个位置上的元素。也就是说,你可以进行以下赋值操作:$ tmp=a[i],a[i]=a[j],a[j]=tmp $($ tmp $ 是一个临时变量)。 你不需要最小化操作次数。但你需要保证操作次数不超过 $ 5n $。

输入格式

第一行包含整数 $ n $($ 1 \leq n \leq 10^{5} $)。 第二行包含 $ n $ 个互不相同的整数 $ a[1],a[2],...,a[n] $($ 1 \leq a[i] \leq n $)。

输出格式

第一行输出一个整数 $ k $($ 0 \leq k \leq 5n $),表示操作次数。 接下来的 $ k $ 行,每行输出一次操作,格式为 "$ i $ $ j $"($ 1 \leq i < j \leq n $,且 $ (j-i+1) $ 是质数)。 如果有多组解,你可以输出任意一组。

说明/提示

由 ChatGPT 5 翻译