B1041 [HAOI2008]圆上的整点 数学

it2022-05-09  29

这个题一开始看着没什么思路,但是一看题解就明白了不少,主要是数学证明,代码很好写。

贴个网址:

hzwer

题干:

题目描述   求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。 输入格式   只有一个正整数n,n<=2000 000 000 输出格式   整点个数 样例输入 4 样例输出 4

代码:

#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int main() { int n,ans=4; scanf("%d",&n); while((n&1)^1) n>>=1; int x=1; while(x*x<=n) x++; for(int i=2; i<=x; i++) if(n%i==0) { int c=0; while(n%i==0) c+=2,n/=i; if(i%4==1) ans*=(c+1); } if(n>1&&n%4==1) ans*=3; printf("%d\n",ans); return 0; }

 

转载于:https://www.cnblogs.com/DukeLv/p/9669533.html


最新回复(0)