2013蓝桥杯最后一题

题目大概意思是说 地面有一个已知长宽的农场,高空中漂浮着一些圆形的浮岛,已知阳光和地面的夹角,那么农场中有些地方就会被浮岛的阴影覆盖不能种植,那么请问:能种植的面积是多少呢?

在一开始要求输入农场的长x,宽y,阳光与地面夹角的度数degree,浮岛的个数num,每个浮岛的坐标xi,yi,zi,和相应的半径ri。

 

我们在赛场上的时候由于思维僵化,想的都是用数学的方法,找交点,分割图形,算面积,但大家基本都没人做出来。结果我一出考场,就想到可以用大量随机点投影的方法,通过算随机点与每个圆心的距离即可知是否在阴影区中,然后用不在阴影区的比率乘以农场面积即可得可种植面积了。

具体程序如下:

#include "iostream"
#include "math.h"
#include "stdlib.h"
#include "stdio.h"
   
#define PI 3.1415926
#define M 1000000
   
using namespace std;
   
double x,y,degree,xi[1000],yi[1000],zi[1000],ri[1000],xx,yy;int num,n;long m,mm;
   
double distance(double x1,double y1,double x2,double y2)
{
    return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
   
int panduan(double x1,double y1)
{
    int kai;
    kai=1;
    for(n=0;n>x;cin>>y;cin>>degree;cin>>num ;
    degree=degree/180*PI;
    for(n=0;n>xi[n];cin>>yi[n];cin>>zi[n];cin>>ri[n];xi[n]=xi[n]+zi[n]/tan(degree);
    }
   
    mm=0;
    for(m=0;m
			

2013蓝桥杯最后一题》上有1条评论

  1. Pingback引用通告: BZ编程小组 作品 | BZ编程小组

发表评论

电子邮件地址不会被公开。 必填项已用*标注