Codeforces Round #613 (Div. 2) C. Fadi and LCM (数学)
2024-09-05 07:02:20
题意:给你一个正整数\(x\),找两个正整数\(a\),\(b\),使得\(lcm(a,b)=x\),并且\(max(a,b)\)最小.
题解:我们知道,\(lcm(a,b)=a*b/gcd(a,b)\),所以如果\(a\)和\(b\)不互质,那么\(a*b\)必然可以约去一个\(gcd(a,b)\),也就表示\(max(a,b)\)的值可以变得更小,所以我们要找的\(a\)和\(b\)必然要互质,即得到\(gcd(a,b)=1\),从而推出\(a*b=x\),所以我们可以直接枚举到\(\sqrt{x}\),更新最小值即可.
代码:
ll x;
ll ans1,ans2,res=1e18; int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>x; for(ll i=1;i*i<=x;++i){
if(x%i) continue;
if(__gcd(i,x/i)==1 && res>max(i,x/i)){
ans1=i,ans2=x/i;
}
} cout<<ans1<<' '<<ans2<<endl; return 0;
}
最新文章
- 在github上写个人简历——最简单却又不容易的内容罗列
- C语言实现二叉树-利用二叉树统计单词数目
- python中的Unittest常用方法
- netty 入门
- Android与PHP服务器交互
- Linux安装QQ 2017
- ZendStudio快捷键 注释的快捷键
- iOS手机号正则表达式并实现344格式 (正则的另一种实现方式)
- Unity学习入门
- hdu1012
- qt中moc的作用
- A glance at endpoint security
- 学习poisson.c
- IScroll基本用法
- 【转载】vi/vim使用进阶: 指随意动,移动如飞 (一)
- mysql表分区案例
- 【leetcode】27-RemoveElement
- pandas中series和dataframe之间的区别
- SWT table性能改善 -- 使用VirtualTable
- # 20155222 2016-2017-2 《Java程序设计》第5周学习总结