3 条题解

  • 2
    @ 2025-11-22 14:31:35

    不可能包AC

    方法1:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll k,n,e,d;
    int main() {
        cin >> k;
        while (k--) { 
            cin >> n >> e >> d;
            ll m=n+2-e*d,de=m*m-4*n;
            if (de<0) {
                cout << "NO" << endl;
                continue;
            }
            long long sqrt_de = sqrt(de);
            if (sqrt_de * sqrt_de != de) {
                cout << "NO" << endl;
                continue;
            }
            ll p=(m-sqrt_de)/2,q=(m+sqrt_de)/2;
            if (p>0&&q>0&&p*q==n) {
                cout << p << " " << q << endl;
            } else {
                cout << "NO" << endl;
            }
        }
        //彭子洋原创^_^; 
        return 0;
    }
    

    方法2:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll k,n,d,e,m,p,q; 
    int main(){
    	cin >> k;
    	while(k--){
    		cin >> n >> d >> e;
    		m=n+2-e*d;
    		ll lf=1,rt=m/2;
    		bool f=0;
    		while(lf<=rt){
    			p=(lf+rt)/2;
    			q=m-p;
    			if(p*q>n){
    				rt=p-1;
    			}
    			else if(p*q<n) {
    				lf=p+1;
    			}
    			else {
    				cout << p << " " << q << "\n";
    				f=1;
    				break;
    			}
    		}
    		if(!(f)) cout << "NO\n";
    	}
    	return 0;
    }
    //
    

    信息

    ID
    2917
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    193
    已通过
    48
    上传者