1 条题解

  • 0
    @ 2025-10-10 15:45:59

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n,x,y,i,j,a[100][100],r,r1;
    	double min=10000;
    	double s=0,s1=0;
    	cin>>x>>y;
    	cin>>n;
    	for (i=0;i<n;i++) {
    		for (j=0;j<2;j++) {
    			cin>>a[i][j];
    		}
    	}
    	s=x*1.0/y;
    	for (i=0;i<n;i++) {
    		s1=a[i][0]*1.0/a[i][1];
    		if (fabs(s-s1)<min) {
    			min=fabs(s-s1);
    			r=a[i][0];
    			r1=a[i][1];
    		} else if (fabs(s-s1)==min && a[i][0]*a[i][1]<r*r1) {
    			r=a[i][0];
    			r1=a[i][1];		
    		}
    	}
    	
    	cout<<r<<" "<<r1<<endl;
    
    	return 0;
    }
    
    

    Java :

    
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    
    public class Main {
    
    	static double k;
    	
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int ow = sc.nextInt();
    		int oh = sc.nextInt(); 
    		//计算比例
    		k = ow*1.0/oh;
    		
    		int n = sc.nextInt(),i;
    		Panda[] pandas = new Panda[n];
    		for(i=0;i<pandas.length;i++) {
    			pandas[i] = new Panda();
    			pandas[i].w = sc.nextInt();
    			pandas[i].h = sc.nextInt();
    		}
    		//根据接近值排序
    		Arrays.sort(pandas,new Comparator<Panda>() {
    			@Override
    			public int compare(Panda x, Panda y) {
    				if(Math.abs(x.w*1.0/x.h-k) < Math.abs(y.w*1.0/y.h-k)) {
    					 return -1;
    				}else if(Math.abs(x.w*1.0/x.h-k) ==  Math.abs(y.w*1.0/y.h-k) && x.w*x.h < y.w*y.h) {
    					 return -1;
    				}else {
    					return 1;
    				}
    			}
    		});
    		System.out.println(pandas[0].w+" "+pandas[0].h);
    		sc.close();
    	}
    	
    }
    class Panda{
    	int h;
    	int w;
    }
    
    
    • 1

    信息

    ID
    326
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者