编程题:倍数对
对于一个整型数组$$(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$$。
答案:若无答案欢迎评论
### 输入格式:
每个测试点包含多组数据。第一行是整数$$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$$。
答案:若无答案欢迎评论