小红的数学题

题目链接: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;

}
posted @ 2025-05-15 19:36  Marinaco  阅读(23)  评论(0)    收藏  举报
//雪花飘落效果