时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld
题目描述
"我的梦想是成为马娘偶像!"在逃亡者SISTERS不断发展壮大的同时,醒目飞鹰也在一步步的接近她的梦想。
4 月 4 日,为了庆祝醒目飞鹰的生日,朋友们为她订购了一个大蛋糕。
注视着大快朵颐的醒目飞鹰,联想起她惨淡的文化成绩,荣进闪耀一把抢过蛋糕。
"飞鹰子,答对下面的问题后才可以继续吃蛋糕哦~"
"现在飞鹰子有一串

的排列

,如果两个数

互质,你就可以交换它们的位置。那么飞鹰子你能够在

次交换内,将这串排列按从小到大排序吗?"
"寄!"
茫然地抬起头,醒目飞鹰下意识地回答道。
排列:一串

的排列指一个长为

的序列,满足

到

每个数出现且仅出现一次。
互质:如果两个正整数

的最大公约数等于

,那么称这两个正整数是互质的。
输入描述:
第一行一个整数
,表示给出一个
的排列。
第二行
个整数
,表示具体的排列。
输出描述:
第一行输出一个整数
,表示交换的次数。
接下来
行,每行两个整数
,表示交换第
个位置上的数和第
个位置上的数。
你可以输出任意一个满足上述限制的答案。注意,你不需要最小化
.
示例1
说明
对于样例一,我们有如下解释。
初始排列为
,接下来每次交换后,有:
