AT_pakencamp_2021_day2_i Multiple Swap

题目描述

给定长度为 $N-1$ 的正整数序列 $A=(A_2,A_3,\ldots,A_N)$ 和 $B=(B_2,B_3,\ldots,B_N)$。(注意下标从 $2$ 开始) 请判断是否存在一种方法,通过对数列 $A$ 进行不超过 $10^6$ 次以下操作,使得 $A=B$,如果存在,请构造出一种方案。 - 每次操作可以选择整数 $i\ (2\leq i)$ 及其倍数 $j$,交换 $A_i$ 和 $A_j$ 的值。此时允许 $i=j$。

输入格式

输入从标准输入中给出,格式如下: > $N$ $A_2$ $A_3$ $\ldots$ $A_N$ $B_2$ $B_3$ $\ldots$ $B_N$

输出格式

如果存在一种方法可以使 $A=B$,请输出如下格式: > $M$ $I_1$ $J_1$ $I_2$ $J_2$ $\vdots$ $I_M$ $J_M$ 其中,$M\ (0\leq M\leq 10^6)$ 表示操作次数,$I_k,J_k$ 表示第 $k$ 次操作选择的 $i,j$。 如果不存在方法使 $A=B$,请输出 `-1`。

说明/提示

### 限制条件 - $2\leq N\leq 50000$ - $1\leq A_i,B_i\leq 50000\ (2\leq i\leq N)$ - 所有输入均为整数 ### 样例说明 3 原案: \[turtle0123\\\_\\\_\](https://atcoder.jp/users/turtle0123\_\_) 由 ChatGPT 4.1 翻译