ACM C语言 算法题作为一个大学ACMer,UHAER不禁想起小学时CCTV7上播出的《中学生电脑课堂》栏目,其中有这样一个程序来计算近似的π值.如下图,随机取正方形内的坐标点,统计是有多少点在圆内部
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/24 17:53:09
ACM C语言 算法题作为一个大学ACMer,UHAER不禁想起小学时CCTV7上播出的《中学生电脑课堂》栏目,其中有这样一个程序来计算近似的π值.如下图,随机取正方形内的坐标点,统计是有多少点在圆内部
ACM C语言 算法题
作为一个大学ACMer,UHAER不禁想起小学时CCTV7上播出的《中学生电脑课堂》栏目,其中有这样一个程序来计算近似的π值.如下图,随机取正方形内的坐标点,统计是有多少点在圆内部(包括圆上),圆面积=π×r×r,正方形面积=4×r×r,如果取的点足够多那么(圆内点数:正方形内点数)=(圆面积:正方形面积).
现在给出所有坐标,请据此计算π的近似值.
Input
第1行:n r x0 y0
第2行:x1 y1 x2 y2 x3 y3 ...xn
yn
n:随机点数,正整数,n∈[1,100000]
r:圆半径,整数,r∈[0,10000]
x0
y0:圆心坐标,整数,x0,y0∈[-10000+r,10000-r]
xi
yi:随机点坐标,整数,xi∈[x0-r,x0+r],yi∈[y0-r,y0+r](i>0)
Output
输出一行结果,保留8位小数
第1行:0.00000000
Sample Input
9 1 0 0
-1 -1 -1 0 -1 1 0 -1 0 0 0 1 1 -1 1 0 1 1
Sample Output
2.22222222
代码:
#include
#include
#define LEN 100000+10
int main()
{
\x05long int n,r,x0,y0,x[LEN][2];
\x05long int a=0,b=0;
\x05int i,j;
\x05double pi;
\x05
\x05scanf("%ld%ld%ld%ld",&n,&r,&x0,&y0);
\x05
\x05for(i=0;i
ACM C语言 算法题作为一个大学ACMer,UHAER不禁想起小学时CCTV7上播出的《中学生电脑课堂》栏目,其中有这样一个程序来计算近似的π值.如下图,随机取正方形内的坐标点,统计是有多少点在圆内部
计算多少点在正方形内的判断条件错误,有两点:
正方形的中心已经偏移过了,代码中多处理了一次;
计算点是否在圆内时包含了边界,此处计算正方内点时也应该包含边界.
修改如下:
if ((x[i][0] <= x0+r) && (x[i][0] >= x0-r) &&(x[i][1] <= y0+r) && (x[i][1] >= y0-r))
【认真回答,呈请采纳】