-->
当前位置:首页 > 题库 > 正文内容

编程题:倍数对

Luz3年前 (2021-10-21)题库970
对于一个整型数组$$(p_{1}, p_{2}, …, p_{n})$$,如果某个下标小的元素是下标大的元素的倍数,我们称这两个元素为倍数对。形式化地,若存在$$i$$和$$j$$,满足$$i < j$$且$$p_{i}$$是$$p_{j}$$的倍数,则称$$(p_{i}, p_{j})$$为倍数对。给定一个整型数组,数组元素是整数1…$$n$$的一个排列组合,请编写程序,计算该数组中所有倍数对的数目。

### 输入格式:

每个测试点包含多组数据。第一行是整数$$T(1≤T≤10^4)$$,表示测试数据组数。对于每组数据,第一行为整数$$n$$$$ (1≤n≤10^5)$$,表示给定数组的长度,第二行为$$n$$个空格间隔的整数,表示给定的数组,保证给定的数组是整数1…$$n$$的一个排列组合。保证$$∑n≤10^6$$。

### 输出格式:

对每组数据输出一行,为一个整数,表示数组中倍数对的数目。

### 输入样例:

in
2
5
1 4 3 2 5
5
5 4 3 2 1



### 输出样例:

out
1
5


### 解释:
样例1:倍数对为(4,2)。

样例2:倍数对为(5,1), (4,1), (3,1), (2,1), (4,2)。

### 数据规模:
测试点0: $$n≤10$$;

测试点1-2: $$10< n≤100$$;

测试点3: $$T >1000, 10^5<∑n≤10^6$$。







答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。