CF1986G2.Permutation Problem (Hard Version)
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是该问题的困难版本。唯一的区别在于本版本中 n≤5⋅105,且所有输入数据集合的 n 之和不超过 5⋅105。
给定一个长度为 n 的排列 p。计算有多少对下标 1≤i<j≤n 满足 pi⋅pj 能被 i⋅j 整除。
排列是一个长度为 n 的整数序列,其中每个整数 1 到 n 恰好出现一次。例如,[1]、[3,5,2,1,4]、[1,3,2] 是排列,而 [2,3,2]、[4,3,1]、[0] 不是排列。
输入格式
每组测试数据包含若干组输入数据。第一行包含一个整数 t(1≤t≤104),表示输入数据的组数。接下来是每组数据的描述。
每组数据的第一行包含一个整数 n(1≤n≤5⋅105),表示排列 p 的长度。
每组数据的第二行包含 n 个互不相同的整数 p1,p2,…,pn(1≤pi≤n),表示排列 p。
保证所有输入数据集合的 n 之和不超过 5⋅105。
输出格式
对于每组输入数据,输出满足条件的下标对 1≤i<j≤n 的数量,使得 pi⋅pj 能被 i⋅j 整除。
输入输出样例
输入#1
6 1 1 2 1 2 3 2 3 1 5 2 4 1 3 5 12 8 9 7 12 1 10 6 3 2 4 11 5 15 1 2 4 6 8 10 12 14 3 9 15 5 7 11 13
输出#1
0 1 1 3 9 3
说明/提示
在第一组输入数据中,没有下标对,因为排列的大小为 1。
在第二组输入数据中,有一个下标对 (1,2),且它是合法的。
在第三组输入数据中,下标对 (1,2) 是合法的。
在第四组输入数据中,下标对 (1,2)、(1,5) 和 (2,5) 是合法的。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?