问题标题: 开始结贴

0
0
已解决
黄依成
黄依成
中级天翼
中级天翼

因为是考试题目,所以有些大佬看不到,所以把题目发出来凑合一下

题目描述 Description

给出n个不重复的正整数,以及一个指定的分数x/y。请你从n个数中找出2个数,满足这2个数组成的分数与x/y的数值最接近。

比如输入5个数:
1,2,3,4,5
指定的分数是6/7
在这5个数中找到两个数组成的分数与6/7最接近的是4/5
所以应当输出4和5。

输入描述 Input Description

输入两行,
第一行输入正整数n,x,y (n<=1000);
第二行输入n个正整数。

输出描述 Output Description

输出组成的分数最接近x/y的两个数。

样例输入 Sample Input

5 6 7 1 2 3 4 5

样例输出 Sample Output

4 5

数据范围及提示 Data Size & Hint

如果答案存在多组最接近最小值的数据,取下标字典序最小的:
比如:
在1 2 3 4 5这组数据中,存在2组答案
1:2和2:4都接近比值,此时选择1:2这组数据

 

WA10分代码:

#include<iostream>
using namespace std;
int n,i1,j1;
double x,y,minn=0x3f3f3f3f,sum,a[1005];
int main(){
	cin>>n>>x>>y;
	sum=x/y;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n-1;i++){
		for(int j=i+1;j<=n;j++){
			double cnt=double(i)/double(j);
			if(cnt>sum){
				if((cnt-sum)<minn){
					minn=cnt-sum;
					i1=a[i];j1=a[j];
				}
			}else{
				if((sum-cnt)<minn){
					minn=sum-cnt;
					i1=a[i];j1=a[j];
				}
			}
		}
	}
	cout<<i1<<" "<<j1;
	return 0;
}

 

黄依成在2020-07-28 11:45:40追加了内容

已AC,结贴了

黄依成在2020-07-28 12:16:38追加了内容

顶!


0
0
黄依成
黄依成
中级天翼
中级天翼

顶!

黄依成在2020-07-28 10:11:23追加了内容

顶!

黄依成在2020-07-28 10:15:36追加了内容

顶!

黄依成在2020-07-28 11:23:11追加了内容

顶!

0
赵逸凡
赵逸凡
初级启示者
初级启示者

你现在正在考试?还是考过了

0
0
0
王泽宇
王泽宇
初级光能
初级光能

sassd

王泽宇在2020-07-28 12:23:12追加了内容

结帖

我要回答