Python程序:找到平方数等于两个数乘积的方案数
假设我们有两个数组nums1和nums2,我们要找到满足以下两个规则的三元组(类型1和类型2)的数量 –
- 三元组(i,j,k)如果nums1 [i] ^ 2 = nums2 [j] * nums2 [k],其中[0 <= i
- 三元组(i,j,k)如果nums2 [i] ^ 2 = nums1 [j] * nums1 [k],其中[0 <= i
因此,如果输入是nums1 = [7,4] nums2 = [5,2,8,9],则输出将为1,因为有一种类型1的三元组(1,1,2),nums1 [1] ^ 2 = nums2 [1] * nums2 [2] = (16 = 2*8)。
要解决此问题,我们将遵循以下步骤:
- cnt1:一个映射将nums1中的每个元素及其计数保存下来。
- cnt2:一个映射将nums2中的每个元素及其计数保存下来。
- 定义函数triplets(),该函数将接受arr1,arr2。
- ans:初始值为0。
- 对于arr1中的每个t,v的items(),
- 如果arr2中存在t,k等于arr2 [t],否则k等于0。
- tmp等于k*(k-1)/ 2。
- sq等于t * t。
- 对于arr2中的每个m,
- 如果m<t,并且sq mod m等于0,则-
- tmp:= tmp +(存在则为arr2 [m],否则为0)*(存在则为arr2 [sq / m的商],否则为0)。
- ans = ans + tmp * v
- 返回ans
- 从主方法中执行以下操作-
- 返回triplets(cnt1,cnt2)+ triplets(cnt2,cnt1)
示例
让我们看看以下实现以更好地理解-