2 条题解

  • 1
    @ 2023-9-18 10:53:21
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    int k,n,d,e;
    signed main(){
    	cin>>k;
    	while(k--){
    		cin>>n>>e>>d;
    		int PPQ=n-e*d+2;//p plus q
    		int PMQ=sqrt(PPQ*PPQ-4*n);//p minus q
    		int p=(PPQ-PMQ)/2;
    		int q=PPQ-p;
    		if(n==p*q&&e*d==(p-1)*(q-1)+1)printf("%d %d\n",p,q);
    		else printf("NO\n");
    	}
    	return 0;
    }
    
    
    • 1
      @ 2023-8-9 15:57:42
      #include<bits/stdc++.h>
      using namespace std;
      int k;
      long long n,e,d;
      bool chek(long long x){
      	long long q = n + 2 - e * d - x;
      	return x * q <= n;
      }
      
      void chek1(long long p,long long q){
      	
      	if(p * q == n){
      		cout<<p<<' '<<q<<endl;
      	}else{
      		cout<<"NO"<<endl;
      	}
      	return ;
      }
      
      void erfen(){
      	long long m=n + 2 - e * d ;
      	long long left = 0,right = m/2+1;
      	while(left+1<right){
      		long long mid=(left + right) / 2;
      		if(chek(mid)){
      			left = mid;
      		}else{
      			right = mid;
      		}
      	}
      	chek1(left,m-left);
      	return ;
      }
      
      int main(){
      	cin>>k;
      	for(int i = 1;i<=k;i++){
      		cin>>n>>e>>d;
      		erfen();
      	}
      	return 0;
      }
      
      • 1

      信息

      ID
      7633
      时间
      1000ms
      内存
      512MiB
      难度
      2
      标签
      递交数
      47
      已通过
      12
      上传者