1 条题解
-
0
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
- 上传者