![]() |
#2
wds12018-12-01 16:21
1、已知a,b,c,d可以计算出小数(a/b) *(c/d)
2、但是已知小数,并不一定存在a,b,c,d的整数解,除非小数集,是整数a,b,c,d计算后的集合,并且都是整除的集合 根据以上分析,给出如下方法: 1、计算出全部A/B的值【a=36,b=34-84】【a=37,b=33-83】... 【a=70,b=1-50】 2、计算出全部C/D的值【d=36,c=44-94】【d=37,c=43-93】...【d=80,c=1-50】【d=81,c=1-49】...【d=100,c=1-30】 3、计算出全部(a/b)*(c/d)的值 ,将以上的全部值作为数据文件【小数点保留位数不同,得到对应的值得精确度就不同】 4、输入小数,在以上数据文件中比较值,如果相等,则打印出对应的abcd,可能存在多组 以上方法有点类似我们查询对数表,供参考。 附件程序:生成保留8位小数的程序,数据120M(包含全部abcd和值) Private Sub Command1_Click() Dim sum1, sum2, count1 count1 = 0 ReDim sum1(1, 1 To 1) For i = 36 To 70 '生成不重复ab For j = 70 - i To 120 - i If j > 0 And j <> i Then count1 = count1 + 1 ReDim Preserve sum1(1, 1 To count1) sum1(0, count1) = i'a sum1(1, count1) = j'b End If Next Next count1 = 0 ReDim sum2(1, 1 To 1) For i = 36 To 100 '生成不重复cd For j = 80 - i To 130 - i If j > 0 And j <> i Then count1 = count1 + 1 ReDim Preserve sum2(1, 1 To count1) sum2(0, count1) = i'c sum2(1, count1) = j'd End If Next Next Open "d:\1.txt" For Output As #1 For i = 1 To UBound(sum1, 2) For j = 1 To UBound(sum2, 2) If sum1(0, i) <> sum2(0, j) And sum1(0, i) <> sum2(1, j) And sum1(1, i) <> sum2(0, j) And sum1(1, i) <> sum2(1, j) Then Print #1, sum1(0, i) & "/" & sum1(1, i) & "*" & sum2(0, j) & "/" & sum2(1, j) & ","; Print #1, Format(sum1(0, i) / sum1(1, i) * (sum2(0, j) / sum2(1, j)), "0.00000000") End If Next Label1.Caption = "完成" & Int(i / UBound(sum1, 2) * 10000) / 100 DoEvents Next Close #1 MsgBox ("ok") End Sub [此贴子已经被作者于2018-12-4 07:13编辑过] |
ABCD都是整数,
ABCD还不要重复,
36<=A<=70
70<=A+B<=120
36<=D<=100,
80<=c+d<=130,求代码
只有本站会员才能查看附件,请 登录