作者AmosYang (LetMeGoogleThatForYou)
看板Prob_Solve
标题Re: [问题] 请问一下2*2*2*2*......的问题
时间Fri Jul 30 06:15:55 2010
※ 引述《linkone (小豆豆)》之铭言:
: 题目给你首数 EX 1 的话 要知道是2^7次方 因为2^7=128
: 若给 10 的话 要知道是 2^20次方 因为2^20=1048576
: 他还有一个限制就是说 未知的数目一定要比已知多
: 像题目给1的话 求出来 128的28就是未知 28有两位数
: 想请问一下 这是什麽数学概念可以知道首数就已知道 2^X次方
假设我们身在一个浮点数计算没有误差的世界…
假设题目给的数字是 x, 一个 n 位数的正整数
算出
L = log (x * 10^(n+1)) / log 2
U = log ((x+1) * 10^(n+1) - 1) / log 2
若 L 与 U 中间有夹任何整数 k, (i.e. L <= k <= U, 且 k 为整数)
则 k 为一解
如果没有夹到任何整数 k, 那就
L += log 10 / log 2
U += log (10 + 9 / 2^U) / log 2
再看看有没有夹到任何整数… loop 到你爽为止…
(算法不止一种…上述的方法是我觉得最直接的)
: 他还有一个限制就是说 未知的数目一定要比已知多
看不出来这限制的意义何在…
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 65.87.177.87
1F:推 linkone:所以说要一直计算到 K有整数部分就是了吗 ? 07/30 13:48
你觉得咧?
2F:→ linkone:如果求出1.032 的话代表K为1吗? 还是要算到L跟U的差为整数 07/30 13:49
你觉得咧?
3F:→ linkone:看了你的公式总算是知道概念了~ 谢谢你 07/30 13:51
不客气
4F:→ linkone:那题我昨天用暴力法把他解出来 但是一直不清楚真正的算法 07/30 13:52
5F:→ linkone:请问A大他这个公式输入10 会算出 10 还是 20?? 07/30 13:55
你觉得咧?
送你两个连结…读一读对你有好处 :)
http://zh.wikipedia.org/zh-tw/%E5%AF%B9%E6%95%B0
http://mis.ndhu.edu.tw/docu/question.htm
※ 编辑: AmosYang 来自: 65.87.177.87 (07/30 21:00)