1.题目描述:点击打开链接
2.解题思路:根据对称性,只用算上半部分即可。面积恒为S的点构成一条双曲线,事先积分算出双曲线与矩形相交的面积(设矩形面积为m),即S+Sln(m/S),用矩形面积减去这部分面积,再除以m即可。注意边界情况特殊处理。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; double a, b, S; int main() { //freopen("test.txt", "r", stdin); int t; cin >> t; while (t--) { cin >> a >> b >> S; double m = a*b; double ans; if (S >= m)ans = 0.0;//边界情况一 else if (S == 0)ans = 1.0;//边界情况二 else ans = (m - S - S*log(m / S)) / m; ans = 100.0*ans; printf("%.6lf%%\n", ans); } return 0; }
时间: 2024-10-15 05:47:26