题意
给定 x 2 + y 2 = r 2 x^2+y^2=r^2 x2+y2=r2,求圆上整点个数。
结论:
对 r r r质因数分解,只有质数对应的次数 c n t m o d 4 = 1 cnt\bmod 4=1 cntmod4=1才有 2 c n t + 1 2cnt+1 2cnt+1乘积贡献,最后答案 × 4 \times 4 ×4 (因为是4个象限)。
int main(){
ll r,s=1;scanf("%lld",&r);
for(ll i=2;i*i<=r;i++)
if(r%i==0){
int c=0;while(r%i==0) r/=i,c++;
if(i%4==1) s*=c<<1|1;
}
if(r>1&&r%4==1) s*=3;
printf("%lld\n",s<<2);
return 0;
}