#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