范围内的特殊功能总和

时间:2016-05-15 04:33:42

标签: algorithm dynamic-programming xor

我想计算在[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)

1 个答案:

答案 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>

我对一种更高效的方式有所了解,不确定我是否会得到它......