while(f[pos].val<=q[i].a&&f[pos].id<maxn){ for(int k=f[pos].id;k<maxn;k+=f[pos].id) add(k,f[pos].val*mu[k/f[pos].id]); pos++; }
这里面的f[pos].id<maxn为啥是到maxn呢,不应该是到min(n,m)吗