专栏首页刷题笔记【LeetCode第 177 场周赛】5171. 最接近的因数

【LeetCode第 177 场周赛】5171. 最接近的因数

给你一个整数 num,请你找出同时满足下面全部要求的两个整数:

两数乘积等于 num + 1 或 num + 2 以绝对差进行度量,两数大小最接近 你可以按任意顺序返回这两个整数。

示例 1:

输入:num = 8 输出:[3,3] 解释:对于 num + 1 = 9,最接近的两个因数是 3 & 3;对于 num + 2 = 10, 最接近的两个因数是 2 & 5,因此返回 3 & 3 。 示例 2:

输入:num = 123 输出:[5,25] 示例 3:

输入:num = 999 输出:[40,25]

提示:

1 <= num <= 10^9

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/closest-divisors 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我是开方后 暴力算的

class Solution {
public:
    vector<int> closestDivisors(int num) {
        vector<int> ans;
        int n1=num+1;
        int sq1=sqrt(n1);
        while(n1%sq1!=0){
            sq1--;
        }
        int n2=num+2;
        int sq2=sqrt(n2);
        while(n2%sq2!=0){
            sq2--;
        }
        if(sq1>=sq2){
            ans.push_back(sq1);
            ans.push_back(n1/sq1);
        }else{
            ans.push_back(sq2);
            ans.push_back(n2/sq2);
        }
        return ans;
    }
};

排行榜第一的算法是正推(排行第一是头一个拿满分的人,不是这道题的最快解法)

class Solution {
public:
    vector<int> closestDivisors(int num) {
        vector<int> ans;
        ans.push_back(0);
        ans.push_back(0);
        for(int i=1;i*i<=num+2;i++)
        {
            if((num+2)%i==0)
            {
                ans[0]=i;
                ans[1]=(num+2)/i;
            }
            if((num+1)%i==0)
            {
                ans[0]=i;
                ans[1]=(num+1)/i;
            }
        }
        return ans;
    }
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【2020HBU天梯赛训练】7-40 列车调度

    两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有...

    韩旭051
  • 1052 卖个萌 (20 分)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051
  • 【未完成】1025 反转链表 (25 分)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    韩旭051
  • 【2020HBU天梯赛训练】7-40 列车调度

    两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有...

    韩旭051
  • 【POJ 3320】Jessica's Reading Problemc(尺取法)

      尺取时,l和r 代表区间两边,每次r++时,d[r]即r的出现次数+1,d[l]即l的出现次数大于1时,左边可以短一点,d[l]--,l++,直到d[l]出...

    饶文津
  • HDU5972Regular Number(ShiftAnd算法 bitset)

    接下来\(n\)行,每行开头有一个整数\(num\)表示匹配串中该位置的字符可以在\(num\)个桅子花出现,接下来输入这\(num\)个位置

    attack
  • 校招试题 n个数里最小的k个 stringstream运用

    Kindear
  • LeetCode 201. 数字范围按位与(位运算)

    给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。

    Michael阿明
  • 【leetcode刷题】T203-完美数

    https://leetcode-cn.com/problems/perfect-number/

    木又AI帮
  • UVA Machined Surfaces

    题意:这道题我读了很久,也没有读懂最后看的解体报告才懂得题意,题目不难,但是还是错了两次,几个字符窜,左边的‘x’向右边移动当和右边的‘x’连接时候,求剩下的字...

    用户1624346

扫码关注云+社区

领取腾讯云代金券