LL calc(LL x){ //欧拉函数*i*i求和 if(x<=N-10) return sp[x]; if(hsp[x]) return hsp[x]; LL res=getsum(x)%P; for(LL i=2, j; i<=x; i=j+1){ j=x/(x/i); LL t=((powsum(j)-powsum(i-1))%P+P)%P; res=((res-(t*calc(x/i))%P)+P)%P; } return hsp[x]=res; }
这里如果把这个函数的前两句写反,2和10就会超时。