标签:10 相差 GCD 奇数 int 761 偶数 Problem 互质
题目大意
给定一个n,求出一组a,b,c,使得a,b,c满足a+b+c=n且gcd(a,b)=c.
n (10≤n≤10^9)
(1≤t≤10^5)
分析
看一眼数据范围,果断放弃暴力。先从最简单的情况开始想,尝试构造c=1的情况,发现只要a,b互质且a+b=n-c即可满足条件。分情况讨论,若n为偶数,则n-1为奇数,那么n-1可以拆成m+(m+1)的形式。
若n为奇数,则n-1为偶数,先将m=(n-2)/2作为a,b的基点,如果m为偶数,则构造相差为2的互质数(除1之外,两个相差为2的奇数必定互质),如果m为奇数,则构造相差为4的互质数 (如果相差为2,则a,b为两个偶数,除1之外两个相差为4的奇数必定互质)。
代码
#include<bits/stdc++.h> using namespace std; int t; int main() { cin>>t; while(t--) { int n; cin>>n; if(n%2==0)//偶数情况 { cout<<(n-2)/2<<" "<<(n-2)/2+1<<" "<<1<<endl; } else//奇数情况 { int m=(n-1)/2; if(m%2==0) { cout<<m-1<<" "<<m+1<<" "<<1<<endl; } else cout<<m-2<<" "<<m+2<<" "<<1<<endl; } } return 0; }
标签:10,相差,GCD,奇数,int,761,偶数,Problem,互质 来源: https://www.cnblogs.com/KyleDeng/p/15700799.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。