题意:给出a和b,表示在直角坐标系上的x=[-a,a] 和 y=[-b,b]的这样一块矩形区域。给出一个数s,问在矩形内随机选择一个点p=(x,y),则(0.0)和p点组成的矩形面积大于s的概率是多少?
思路:
由于4个象限上的区域是一样的,所以只需要在第一象限上求概率即可。可以根据面积的大小来求概率。
s可能很小,那么p点在任意地方都是满足要求的,所以概率1。如果a*b<=s,那么p点怎么选都不可能大于s,所以概率0。
求出x*y<=s的部分,这部分是不满足要求的,1减去这部分面积占a*b的比例就是答案了。x*y=s是一条曲线y=s/x。画出曲线,求出在举行a*b内的面积大小,用积分来求就行了。主要在求积分问题上,知识忘光了。
1 #include <bits/stdc++.h> 2 #define pii pair<int,int> 3 #define INF 0x3f3f3f3f 4 #define LL long long 5 using namespace std; 6 const int N=33; 7 8 int main() 9 { 10 freopen("input.txt", "r", stdin); 11 int t; double a, b, s; 12 cin>>t; 13 while(t--) 14 { 15 scanf("%lf%lf%lf", &a, &b, &s); 16 if(a*b<s)//没有可能出现大于s的情况 17 puts("0.000000%"); 18 else if(s<1e-6)//s太小,视为0 19 puts("100.000000%"); 20 else 21 { 22 double m=a*b; 23 double ans=(m-s-s*log(m/s))/m; 24 printf( "%.6f%% ", ans*100); 25 } 26 } 27 return 0; 28 }