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;
}

全部评论

相关推荐

收到了北京经纬恒润AE产品测试部门的offer,有了解的友友吗?工作内容怎么样?加班真的很严重吗?值得去吗?
La_place:有人说的人在那边,就是正常互联网作息吧,一天十个小时出头,双休这样。加班有,但是可能也不算严重?
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务