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

全部评论

相关推荐

qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:可以看看我的开源仿b站前后端分离微服务项目,技术栈相当先进,符合企业校招需求,具体为springboot security, nacos,openfeign,gateway,redis,elasticsearch,rocketmq,minio,mybatis-plus,mybatis-plus-join,druid,jwt,swagger,gson,hutool,websocket,讯飞星火api,jave,xxl-job,zipkin,slueth,可快速下载所有用到的中间件和远程连接中间件软件而不用麻烦的去官网找包以及只需小改存放路径就可缓存前端静态资源的nginx和前端dist包,无需会任何前端极速实现本机运行前端,所有文档教程只在牛客,有各中间件启动教程,有配套简历写法速成简历,github已经330star
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务