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