4.15携程笔试2题

// 1 <= n <= 1e9
#include <bits/stdc++.h>
using namespace std;
long long x;

int main(){
    cin >> x;
    //a * b = gcd(a,b)*lcm(a,b) 当两个数gcd为1时,lcm最大,且为两个数的乘积;又两个数越接近,乘积越大。
    if(x & 1){ //连续的两个正整数互质,即gcd为1.
        cout << x / 2 << " " << x / 2 + 1;
    }
    else{
        long long a = x / 2 , b = x - a;
        //找到gcd为1互质的两个数
        while(gcd(a, b) != 1) a--, b++;
        cout << a << " " << b;
    }
    return 0;
}

全部评论

相关推荐

ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务