小红的数学题
题目链接:https://ac.nowcoder.com/acm/contest/108589/D
题意:
给定正整数k,二元一次方程x/^2-px+q且p+q=k,p和q都是正整数,该二元一次方程有两个正整数解,输出合法的p和q
思路:
伟大定理:对于二元一次方程两个根分别为X1,X2
X1+X2=-b/a,X1xX2=c/a
(条件:方程delta>=0)
在本题中不妨设其为a,b,则p=a+b,q=ab
p+q=a+b+ab=k
=> (a+1)(b+1)=(k+1)
(a+1),(b+1)为(k+1)大于等于2的因子
反过来解出p,q即可
void solve(){
int k;cin>>k;
for(int i=2;i*i<=(k+1);i++){
if((k+1)%i==0){
int a=i-1;
int b=(k+1)/i-1;
if(a+b>0&&a*b>0){
cout<<a+b<<' '<<a*b<<endl;return;
}
}
}
cout<<-1<<endl;
}

浙公网安备 33010602011771号