河南省第十三届ICPC大学生程序设计竞赛 L 手动计算

 

 

题意:题意很明显就不用说了?

思路,就疯狂打点?在-8 - +8的格子里面每次加0.01(因为要精确到小数点后一位),然后看有多少个点能够在椭圆的面积中,然后就椭圆面积的点/总点数  的比例再乘以整个取余的面积就是最后的结果。(一开始真的想不到!!!)

最后代码:

/**
*  ┏┓   ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃       ┃
* ┃   ━   ┃ ++ + + +
*  ████━████+
*  ◥██◤ ◥██◤ +
* ┃   ┻   ┃
* ┃       ┃ + +
* ┗━┓   ┏━┛
*   ┃   ┃ + + + +Code is far away from  
*   ┃   ┃ + bug with the animal protecting
*   ┃    ┗━━━┓ 神兽保佑,代码无bug 
*   ┃  	    ┣┓
*    ┃        ┏┛
*     ┗┓┓┏━┳┓┏┛ + + + +
*    ┃┫┫ ┃┫┫
*    ┗┻┛ ┗┻┛+ + + +
*/
#include<cstdio>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include<vector>
#include<queue>
#include<map>
#define ll long long 
using namespace std;

const int N=1000000+100;
int n ,m,h;
ll s[N];


int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        double a,b,c,d;
		cin>>a>>b>>c>>d;
		double res=0;
		for(double x=-8;x<=8;x+=0.01)
			for(double y=-8;y<=8;y+=0.01)
			if(x*x/a/a+y*y/b/b<=1||x*x/c/c+y*y/d/d<=1)
			res++;
		printf("%.1lf\n",res/10000);	


    }
        
	
	return 0;
}

(图片如有侵权,请及时与本人沟通删除)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值