Guest User

Untitled

a guest
Jun 25th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<cstring>
  4. #include<sstream>
  5. #include<cctype>
  6. #include<string.h>
  7. #include<algorithm>
  8. #include<cmath>
  9. #include<stack>
  10. #include<fstream>
  11. #include<cstdlib>
  12. #include<vector>
  13. #include<map>
  14. #include<utility>
  15. #include<iomanip>
  16. #include<queue>
  17. #define eps 1e-9
  18. #define max(a,b) ((a>b)?a:b)
  19. #define min(a,b) ((a<b)?a:b)
  20. #define pb(a) push_back(a)
  21. #define mp(a,b) make_pair(a,b)
  22. #define pi acos(-1.0)
  23. using namespace std;
  24.  
  25. int main()
  26. {
  27. int t,kk=1;
  28. double l,lp,n,c,low,high,mid,ans,r,x;
  29. cin>>t;
  30. while(t--)
  31.     {
  32.     cin>>l>>n>>c;
  33.     lp=( (1.0+(n*c)) *l);
  34.     if(fabs(lp-l)<eps) {
  35.                        printf("Case %d: 0\n",kk++);
  36.                        continue;
  37.                        }
  38.     //cout<<l<<" "<<lp<<endl;
  39.     //cout<<pi<<endl;
  40.     low=eps;
  41.     high=pi;
  42.     ans=0.0;
  43.     for(int i=0;i<=100;i++)
  44.         {
  45.         mid=((low+high)/2.0);
  46.         r=(lp/mid);
  47.         ans=sqrt((2.0*r*r)-(2.0*r*r*cos(mid)));
  48.         if(fabs(l-ans)<eps) break;
  49.         if(l+eps<ans) low=mid;
  50.         /*if(l==ans) break;
  51.         if(l<ans) low=mid;*/
  52.         else high=mid;
  53.         }
  54.     //cout<<r<<endl;
  55.     x=r-sqrt( (r*r) - ((l*l)/4.0) );
  56.     printf("Case %d: %.9lf\n",kk++,x+eps);
  57.     }
  58.  
  59. return 0;
  60. }
Add Comment
Please, Sign In to add comment