• 118th LeetCode Weekly Contest Powerful Integers


    Given two non-negative integers x and y, an integer is powerful if it is equal to x^i + y^j for some integers i >= 0 and j >= 0.

    Return a list of all powerful integers that have value less than or equal to bound.

    You may return the answer in any order.  In your answer, each value should occur at most once.

    Example 1:

    Input: x = 2, y = 3, bound = 10
    Output: [2,3,4,5,7,9,10]
    Explanation: 
    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
    

    Example 2:

    Input: x = 3, y = 5, bound = 15
    Output: [2,4,6,8,10,14]
    

    Note:

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

    emmm,暴力也能过哒

    int poww(int a, int b) {
        int ans = 1, base = a;
        while (b != 0) {
            if (b & 1 != 0)
                ans *= base;
                base *= base;
                b >>= 1;
        }
        return ans;
    }
    
    class Solution {
    public:
        vector<int> powerfulIntegers(int x, int y, int bound) {
            int sum = 0;
            int r,l;
            vector<int>Ve;
            map<int,int>Mp;
            
            if(x == 1){
                r = bound;
            }
            else if(x!=1){
                r = log(bound)/log(x)+1;
            }
            if(y == 1){
                l =bound;
            }else if(y!=1){
                l = log(bound)/log(y)+1;
            }
            for(int i=0;i<=r;i++){
                for(int j=0;j<=l;j++){
                        sum = poww(x,i) + poww(y,j);
                        if(sum>bound) continue;
                        Mp[sum]++;
                      
                        if(Mp[sum]<=1){
                            
                            Ve.push_back(sum);
                        }
                      
                }
            }
            
            return Ve;
        }
    };
  • 相关阅读:
    单行道
    学习C++50条忠告
    ROI
    OpenCV(图像处理)—访问像素的三种方法
    毕业课题项目——基于单目摄像头的距离测量
    API
    MFC
    STL
    debug、release
    Android中退出程序的提示框
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/10228769.html
Copyright © 2020-2023  润新知