rt,我使用 int128 跑分解质因数:
int ret=n;
for(int i=2;i*i<=ret;i++){
if(ret%i==0){
fac[0]++;
fac[fac[0]]=i;cnt[fac[0]]=0;
while(ret%i==0){
ret/=i,cnt[fac[0]]++;
}
}
}
if(ret!=1)fac[++fac[0]]=ret,cnt[fac[0]]=1;
然后在开氧气时结果错误,gdb 一下发现fac[0]++;执行后值没有改变(当然开氧气调试大概不准),换成long long 答案正确。请问如何避免这种 int128 玄学错误的问题?