无心人 发表于 2009-3-13 15:28:05

你怀疑是针对该问题特殊设计的输入数据》

无心人 发表于 2009-3-13 15:28:52

现在多少秒了?

shshsh_0510 发表于 2009-3-13 15:55:55

我的机器只是做4*5000*(5000-1)/2次异或就0.78了,机器不同也感觉不出哪个0.06是个啥概念
不过,如果是随机生成数据的话,不用这么麻烦吧。
只要到着一个个判断就很快了吧
function log10(n){
    if(n>10^38) return 38;
    if(n>10^37) return 37;
    .....
}
如果知道数据不是随机,应该根据规律来,在某个数据的快慢不说明啥问题

gxqcn 发表于 2009-3-13 16:03:31

差异大的两数不必非得XOR计算,
其结果位数可由两者较大的决定。

无心人 发表于 2009-3-13 16:19:30

A = 10^20 - 2^20
B = 2^20
A XOR B = 10^20

log10(A) =    19.99999999999999544609229344
log10(A XOR B) = 20

litaoye 发表于 2009-3-13 16:22:13

回复 72# 无心人 的帖子

现在被我改的通过不了了!呵呵,正在找错误!

无心人 发表于 2009-3-13 16:31:05

各位请解释下75#的例子

无心人 发表于 2009-3-13 16:35:08

75#的例子还能构造出很多很多很多很多

所以你们以为的差异大可以忽略的结论是错误的啊
虽然可以做出判定条件
但似乎也太多了点吧

无心人 发表于 2009-3-13 16:37:19

楼主的这个说法不妥:
如果最高位m高于10^n,且低于10^n+1,那么这个数同最高位小于m的数进行Xor并取log10后的结果,都是n,


应该改为


考虑二进制位,如果最高位m高于10^n的最高位,且低于10^(n+1)的最高位,那么这个数同最高位小于m的数进行Xor并取log10后的结果,都是n,

无心人 发表于 2009-3-13 16:39:36

XOR当两个数字的比特位是1的位置均不相同的时候等于运算+

所以,肯定存在10进制进位的可能,当然绝对不存在二进制进位
页: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
查看完整版本: 关于一个运算优化的问题