#include <stdio.h> #include <stdlib.h> #include <math.h>

int compare(const void a, const void b) { return ((int)a - (int)b); }

void findPerfectWings(int N, int wings[]) { qsort(wings, N, sizeof(int), compare); double golden_ratio = (1 + sqrt(5)) / 2; int i, min_diff = wings[N-1], index1 = 0, index2 = 0; for (i = 0; i < N-1; i++) { double ratio = (double) wings[i+1] / wings[i]; if (fabs(ratio - golden_ratio) < min_diff) { min_diff = fabs(ratio - golden_ratio); index1 = i; index2 = i + 1; } } printf("%d %d\n", wings[index1], wings[index2]); }

int main() { int T; scanf("%d", &T); while (T--) { int N; scanf("%d", &N); int wings[N]; int i; for (i = 0; i < N; i++) { scanf("%d", &wings[i]); } findPerfectWings(N, wings); } return 0;

天使告诉小杉每只翅膀都有长度两只翅膀的长度之比越接近黄金分割比例就越完美。现在天使给了小杉N只翅膀小杉想挑出一对最完美的。输入数据每组测试数据的第一行有一个数 N 2≤N3×104第二行有 N 个不超过1e5的正整数表示 N 只翅膀的长度。输出数据对每组测试数据输出两个整数表示小杉挑选出来的一对翅膀。注意比较短的在前如果有多对翅膀的完美程度一样请输出最小的一对c语言

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

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