圆上整点(结论)

题意

给定 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;
}