|
本帖最后由 香川群子 于 2016-12-25 11:56 编辑
这个简单吧,只要稍微修改一下:
假设有n1 To n2 的连续正整数区间,遗漏了1个数,需要遍历一次完成检查,那么:
如果一共是偶数个数,那么取平均值t=n1+n2,检查结果遗漏值s=t-s
如果一共是奇数个数,那么平均值仍然取t=n1+n2,
但检查结果有2种,如果s<t/2则遗漏值=t/2-s ,如果s>t/2则遗漏值=t+t/2-s
模拟代码:
- Sub test1(n1&, n2&, r&)
- Dim i&, s&, t&
- t = n1 + n2
- For i = n1 To n2
- If i <> r Then s = s + i: s = s Mod t
- Next
- If t Mod 2 Then s = t - s Else s = t / 2 - s: If s < 0 Then s = t + s
- ' Debug.Print r; s
- End Sub
复制代码
简单测试:
- Sub test_1()
- Dim a(), b(), i&, s&, t&
- a = Array(1, 2, 3, 4, 5, 6, 7)
- b = Array(3, 2, 7, 1, 6, 5)
-
- t = 1 + 7
- For i = 0 To 5
- s = s + b(i): s = s Mod t
- Next
- If t Mod 2 Then s = t - s Else s = t / 2 - s: If s < 0 Then s = t + s
- MsgBox s
- End Sub
复制代码
|
|