当前位置: 首页 > 知识库问答 >
问题:

异或编程难题建议

东方化
2023-03-14

给定一个长int x,计算满足下列条件的a的值的数目:

a异或x>x
0

其中a和x是长整数,XOR是按位XOR运算符

 for(int i =0; i < x; i++)
 {
      if((0 < i && i < x) && (i ^ x) > x)
          count++;    
 }

共有1个答案

荆弘伟
2023-03-14
long long NumberOfA(long long x)
{
    long long t = x <<1;
    while(t^(t&-t)) t ^= (t&-t);
    return t-++x;
}


long long x = 10000000000;
printf("%lld ==> %lld\n", 10LL, NumberOfA(10LL) ); 
printf("%lld ==> %lld\n", x, NumberOfA(x) ); 

输出

10 ==> 5
10000000000 ==> 7179869183

链接到IDEOne代码

试图解释逻辑(使用示例10或1010b)

  • 将x左移1。(值20或10100b)
  • 关闭所有低位,只保留高位(值16或10000b)
  • 减去x+1(16-11==5)

您的规则是a^x必须大于x,但不能向ax添加额外的位。
(如果以4位值开始,则只能使用4位)

n位数字的最大可能值是2^n-1
(例如4位数字,2^4-1==15)
让我们称这个数字为B。

在您的值X和B(包括)之间,有B-X可能值。
(回到我的示例,10。在15和10之间,有5个可能值:1112131415)

在我的代码中,tx<<1,然后关闭所有低位。
(10<<120;关闭所有低位以获得16)

那么16-1是B,b-x是您的答案:
(T-1-x,T-++x相同,是答案)

 类似资料:
  • 出于测试的目的:当它解析数据时,我将一些数据输出到一个呈现完美的浏览器。。 然后我试着用php将它写到一个文件中,如下所示- 和 和

  • 我正在处理的代码有一些编码问题。接收到一个加密字符串,该字符串用ISO-8859-1解码。然后将该字符串放入具有UTF-8编码的DB中。检索该字符串时,它仍然是ISO-8859-1,没有问题。问题是,我还需要能够检索这个字符串作为UTF-8,但我还没有成功。 我尝试将字符串从ISO转换为UTF-8时,从DB检索使用此方法: 不幸的是,在这种情况下,特殊字符只是显示为问号。 原始字符串:测试从DB检

  • 下面是我的代码:

  • 我发现 await 并没有用 update_product_loop 还是立刻就执行力,那 await 和 async 的到底是什么含义,以及我要怎么才能做到真正的等 异步任务 a 完成再去其它呢,就是说 a 里有很多子任务是异步的

  • 1 台阶问题/斐波那契 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2) 第二种记忆方法 def memo(func): cache = {} def wrap(*args): if args not in ca

  • 介绍 Javascript 是一个单线程的编程语言,单线程的特点就是一次只能处理一件事情,当前代码任务耗时执行会阻塞后续代码的执行。异步编程则是一种事件驱动编程,请求调用函数或方法后,无需立即等待响应,可以继续执行其他任务,而之前任务响应返回后可以通过状态、通知和回调来通知调用者。 异步编程方法 js 中的异步编程方法有回调函数、事件处理函数、观察者、Promise、Generator、async