#DJKS3001. 【C++ 三级_202412】B-2 构造性证明 暴力

【C++ 三级_202412】B-2 构造性证明 暴力

Description

关于数学定理证明,也有高下之分。

最暴力的证明方法是“构造性证明”。

即当需要证明某种解存在时,直接把解构造出来,而不是仅通过推理证明解之存在。

下面有一个定理:

设 ai​(i=1,⋯,5)均为正实数。

则一定存在 4 个互不相同的下标 i,j、k、l,使得 ∣ai​/aj​−ak​/al​∣<1/2。

作为程序员,就请你编写程序构造出正确的下标,验证这个结论。

Input Format

输入在一行中顺序给出 5 个正实数。

为保证计算中不产生浮点溢出,我们令输入的数字在 [10−10,1010] 区间内,

且小数点后不超过 10 位小数。

Output Format

在一行中首先输出使得定理结论成立的下标有多少套,随后输出最小的一套下标。

数字间以 1 个空格分隔,行首尾不得有多余空格。

注:所谓下标集 i1​,⋯,i4​ 小于下标集 j1​,⋯,j4​,是指存在 1≤k≤4 使得 il​=jl​,对所有 l<k 成立,且 ik​<jk​。

3.12 5.27 0.0007 9825.4413 10
18 1 4 3 2

Source

思码特OJ编程训练营 http://127.0.0.1