zoukankan      html  css  js  c++  java
  • 970. 强整数

    给定两个正整数 x 和 y,如果某一整数等于 x^i + y^j,其中整数 i >= 0 且 j >= 0,那么我们认为该整数是一个强整数。

    返回值小于或等于 bound 的所有强整数组成的列表。

    你可以按任何顺序返回答案。在你的回答中,每个值最多出现一次。

    示例 1:

    输入:x = 2, y = 3, bound = 10
    输出:[2,3,4,5,7,9,10]
    解释:
    2 = 2^0 + 3^0
    3 = 2^1 + 3^0
    4 = 2^0 + 3^1
    5 = 2^1 + 3^1
    7 = 2^2 + 3^1
    9 = 2^3 + 3^0
    10 = 2^0 + 3^2
    示例 2:

    输入:x = 3, y = 5, bound = 15
    输出:[2,4,6,8,10,14]
     

    提示:

    1 <= x <= 100
    1 <= y <= 100
    0 <= bound <= 10^6

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/powerful-integers

    暴力

    class Solution:
        def powerfulIntegers(self, x: int, y: int, bound: int) -> List[int]:
            a=[]
            b=[]
            for i in range(bound):
                if x**i<bound:a.append(x**i)
                else:break
            for i in range(bound):
                if y**i<bound:b.append(y**i)
                else:break
            res=set()
            for i in a:
                for j in b:
                    if i+j<=bound:
                        res.add(i+j)
            return list(res)

    数学

    class Solution:
        def powerfulIntegers(self, x: int, y: int, bound: int) -> List[int]:
            im=ceil(math.log(bound-1, x)) if x!=1 else 0
            jm=ceil(math.log(bound-1, y)) if y!=1 else 0
            res=set()
            for i in range(im+1):
                for j in range(jm+1):
                    s=pow(x,i)+pow(y,j)
                    if s<=bound:
                        res.add(s)
         
            return list(res)

  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13770430.html
Copyright © 2011-2022 走看看