#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>

using namespace std;

double golden_ratio = 0.6180339887498949;

pair<int, int> findPerfectWings(vector<int>& wings) {
    int n = wings.size();
    pair<int, int> result;
    double min_diff = INT_MAX;

    sort(wings.begin(), wings.end());

    for (int i = 0; i < n - 1; i++) {
        int wing1 = wings[i];
        int wing2 = wings[i + 1];
        double ratio = (double)wing1 / wing2;

        if (abs(ratio - golden_ratio) < min_diff) {
            min_diff = abs(ratio - golden_ratio);
            result = make_pair(wing1, wing2);
        }
    }

    return result;
}

int main() {
    int N;
    cin >> N;

    vector<int> wings(N);
    for (int i = 0; i < N; i++) {
        cin >> wings[i];
    }

    pair<int, int> perfectWings = findPerfectWings(wings);
    cout << perfectWings.first << endl;
    cout << perfectWings.second << endl;

    return 0;
}
``
【题目部分】背景 Background小杉终于进入了天堂。他看到每个人都带着一双隐形翅膀他也想要。小杉是怎么看到的?……天使告诉小杉每只翅膀都有长度两只翅膀的长度之比越接近黄金分割比例就越完美。现在天使给了小杉N只翅膀小杉想挑出一对最完美的。你可以认为黄金分割比就是06180339887498949输入每组测试数据的第一行有一个数N2=N=30000第二行有N个不超过1e5的正整数表示N只翅膀的长

原文地址: https://www.cveoy.top/t/topic/hRVl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录