“异或”的求助
  • 板块P1161 开灯
  • 楼主alma
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/18 17:00
  • 上次更新2023/10/27 07:00:42
查看原帖
“异或”的求助
818226
alma楼主2022/10/18 17:00

“异或”的求助 关于大佬们的题解:部分代码如下

while (n--)  
    {  
        scanf("%lf",&a);//out f  
        scanf("%d",&t);  
        for (int i=1;i<=t;i++)  
        {  
            int x=(int)floor(a*i);  
            ans^=x; //这里我不理解???
        }  
    }  

这里是大佬题解里的代码。对于这段代码,下面的这句话怎么理解?

既然x不断变化的,那么为什么ans^=x;的最终值就是要求的结果呢?

因此我们只需要设ans=0 然后把所有的数异或一遍。因为只有一盏灯是开的,也就是说,其他编号出现的次数都是成对的,异或完都是0,剩下的那一个与0异或得它本身。因此最后ans就是结果。
2022/10/18 17:00
加载中...