B. Pleasant Pairs

2024-08-25 22:36
文章标签 pairs pleasant

本文主要是介绍B. Pleasant Pairs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

time limit per test

2 seconds

memory limit per test

256 megabytes

You are given an array a1,a2,…,ana1,a2,…,an consisting of nn distinct integers. Count the number of pairs of indices (i,j)(i,j) such that i<ji<j and ai⋅aj=i+jai⋅aj=i+j.

Input

The first line contains one integer tt (1≤t≤1041≤t≤104) — the number of test cases. Then tt cases follow.

The first line of each test case contains one integer nn (2≤n≤1052≤n≤105) — the length of array aa.

The second line of each test case contains nn space separated integers a1,a2,…,ana1,a2,…,an (1≤ai≤2⋅n1≤ai≤2⋅n) — the array aa. It is guaranteed that all elements are distinct.

It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052⋅105.

Output

For each test case, output the number of pairs of indices (i,j)(i,j) such that i<ji<j and ai⋅aj=i+jai⋅aj=i+j.

Example

Input

Copy

3
2
3 1
3
6 1 5
5
3 1 5 9 2

Output

Copy

1
1
3

Note

For the first test case, the only pair that satisfies the constraints is (1,2)(1,2), as a1⋅a2=1+2=3a1⋅a2=1+2=3

For the second test case, the only pair that satisfies the constraints is (2,3)(2,3).

For the third test case, the pairs that satisfy the constraints are (1,2)(1,2), (1,5)(1,5), and (2,3)(2,3).

解题说明:此题是一道数学题,遍历去找满足条件的组合,但找的时候注意没必要每次从头去找,第二个数找的时候直接找 arr[i] - i,同时每次跳过arr[i],否则题目会超时。

#include<stdio.h>
#include<stdlib.h>
int main()
{int t, n, i, j, count;long long arr[200000];scanf("%d", &t);while (t--){count = 0;scanf("%d", &n);for (i = 1; i <= n; i++){scanf("%lld", &arr[i]);}for (i = 1; i <= n; i++){for (j = arr[i] - i; j <= n; j = j + arr[i]){if (j > i && (i + j) == arr[i] * arr[j]){count++;}}}printf("%d\n", count);}return 0;
}

这篇关于B. Pleasant Pairs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106843

相关文章

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

【lua实战】lua中pairs和ipairs的区别

很久以前,我在使用lua的过程中,对于pairs和ipairs的理解还处于表层,认为我了解的就是全部。 ipairs就是对表中元素进行顺序排序,pairs就是对表中元素进行随机排序。 比如如下例子: local t = {20, "ss", print, 10}print("------ipairs------")for k,v in ipairs(t) doprint(k,v)end

Leetcode 3267. Count Almost Equal Pairs II

Leetcode 3267. Count Almost Equal Pairs II 1. 解题思路2. 代码实现 题目链接:3267. Count Almost Equal Pairs II 1. 解题思路 这一题同样是题目3265. Count Almost Equal Pairs I的进阶版本。 它主要的区别在于说: 最大的操作次数增加到两次;数组长度增加到最大5000 然后,首

【LeetCode】Swap Nodes in Pairs 链表指针的应用

题目:swap nodes in pairs <span style="font-size:18px;">/*** LeetCode Swap Nodes in Pairs * 题目:输入一个链表,要求将链表每相邻的两个节点交换位置后输出* 思路:遍历一遍即可,时间复杂度O(n)* Definition for singly-linked list.* public class ListNo

K-diff Pairs in an Array问题及解法

问题描述: Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the array. Here a k-diff pair is defined as an integer pair (i, j), where i and j are both num

Map Sum Pairs问题及解法

问题描述: Implement a MapSum class with insert, and sum methods. For the method insert, you'll be given a pair of (string, integer). The string represents the key and the integer represents the valu

lua 中pairs 和 ipairs区别

lua 中pairs 和 ipairs区别 标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的  (string.gmatch)等等。LUA手册中对与pairs,ipairs解释如下: ipairs (t) Returns three values: an iterator

Number of Pairs[二分查找函数]

Number of Pairs 题面翻译 【题目描述】 给出一个由整数组成的数组 a a a,求一对整数 ( i , j ) (i, j) (i,j)( 1 ≤ i < j ≤ n 1 \le i < j \le n 1≤i<j≤n)满足 l ≤ a i + a j ≤ r l \le a_i + a_j \le r l≤ai​+aj​≤r 的数量。 【输入格式】 在输入的第一行为

LightOJ 1236 Pairs Forming LCM

一道唯一分解的题目。 代码: #include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>using namespace std;#define maxn 10000010typedef long long LL;LL prime[1000000];bool

373. Find K Pairs with Smallest Sums

题意:输入两个整形升序数组,整数k,要求分别从2个数组中取出2个数组成对,输出和最小的k个对。 思路:1 参考leetcode discuss;    2  PriorityQueue实现最小堆,具体步骤如下: 初始化为array1中的前k个元素(注意,如果array1中的长度小于k,则为array1.length)和array2中的首个元素组成的pair; 每次从堆中剔除首个元素p(即目