我想计算在[L,R]上定义的函数的总和。
该函数首先计算数字的每个子字符串的xor,然后添加计算出的不同值并将其返回。
Eg: F(312)
3 = 3
3^1 = 2
3^1^2 = 0
1 = 1
1^2 = 3
2 = 2
Sum of distinct values = 3+2+1 = 6 = F(312)
我怎样才能快速计算出来? L,R的范围为1至1000000000。
例如:如果我给L = 5且R = 15,那么函数应该计算F(5)+ F(6)+ F(7)... + F(15)
答案 0 :(得分:0)
JavaScript中的一个可能的解决方案可能是这样的:
pthread_create(&threads[i],NULL,verif,(void*) &n[i])
从/到循环的包装函数是次优的方式。将它组合在一个函数中可以获得更多的性能。
<script type="text/javascript">
function sumXorSubStr(numStr)
{
numStr = parseInt(numStr).toString();
var
results = {},
lastPos = numStr.length -1
;
for(var start=0 ; start <= lastPos ; start++)
for(var op = 0, i = start ; i <= lastPos ; i++)
results[ op ^= numStr[i] ] = 1;
var sum = 0;
for(var i in results)
sum += parseInt(i);
return sum;
}
alert( sumXorSubStr(312) );
</script>
我对一种更高效的方式有所了解,不确定我是否会得到它......