- C语言:21.给定一个rSquare,表示一个圆的半径的平方,某圆的圆心在坐标系原点,需要计算返回处在该园园周上的格点(横纵坐标均为整数的点)数量。
—输入一个整数rSquare。rSquare的取值范围在1到2,000,000,000之间(其中包括1和2,000,000,000)
输出:
—返回圆上的格点数量
举例:—rSquare=1,返回4.圆心在原点、半径为1的圆通过4个格点:(1,0)、(0,1)、(-1,0)和(0,-1)
原文章链接:此链接答案有误https://blog.csdn.net/alibbaab/article/details/108529745
正解:
解题思路:圆心为原点,此圆半径r的平方=rSquare,利用圆的数学表达式:位于圆周上的某点(a,b),满足:a ^ 2+b ^ 2=r ^ 2;
另外还有考虑象限的问题,如果第一象限有满足的一个点,横纵坐标值均为整数,必有 二三四象限的点存在于圆周上(例子:看文章最后一行代码的注释)。
**子程序:
int countPoints(int rSqure)
{
int counter=0;
int i=0,i2=0; //纵坐标变化量i
int j=0