📌  相关文章
📜  找到每个数组元素的两个给定整数的最近幂之间的绝对差(1)

📅  最后修改于: 2023-12-03 15:10:06.107000             🧑  作者: Mango

找到每个数组元素的两个给定整数的最近幂之间的绝对差

本程序为了解决找到每个数组元素的两个给定整数的最近幂之间的绝对差问题。具体来说,输入一个长度为n的数组a和两个整数l、r,对于每个数组元素a[i],需要找出一个最小整数x,使得l^x<=a[i]<=r^x,然后计算r^x-a[i]和a[i]-l^x之间的较小值。

输入格式

共三行,第一行为整数n,表示数组a的长度。第二行为n个整数a[1...n]。第三行为两个整数l和r。

输出格式

输出n行,每行为一个整数,表示对应数组元素的答案。

代码实现
def pow_diff(n, a, l, r):
    res = []
    for i in range(n):
        x = 0
        while pow(l, x) <= a[i] and pow(r, x) <= a[i]:
            x += 1
        if pow(l, x) <= a[i]:
            res.append(min(r ** x - a[i], a[i] - l ** x))
        else:
            res.append(r ** x - a[i])
    return res
程序说明

本程序采用循环的方式来计算最小整数x,其中使用了pow()函数来进行指数运算。然后,根据题目要求计算出每个元素的最近幂之间的绝对差,并取其较小值。最后,将所有元素的答案保存在列表中并返回。

性能分析

本程序时间复杂度为O(nlog2 r),其中n为数组a的长度,r为输入的整数l和r中的最大值。空间复杂度为O(n),需要使用一个列表来保存所有元素的答案。因此,本程序的性能表现较优,适合处理中等大小的数据集。