可能是因为代码里面有ub,比如说我在求线性基的时候
void insert(long long a)
{
for(int i=59;i>=0;i--)
if((a&(1ll<<i))!=0)
if(num[i]==0)
{
num[i]=a;
return ;
}
else
a^=num[i];
}
第4行里面开始的时候写的是if((a&(1<<i))!=0),在计算1<<i的时候因为1的数据类型是int,i的数据类型也是int,所以返回值为int,但是i的取值很大的时候左移位数超出了int类型的表达范围,运行结果将会是无法预知的。
所以应该改成1ll<<i