Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. const double PI = acos((double) -1);
  9. const double sqrt2 = sqrt((double)2);
  10.  
  11. double sqr(double a)
  12. {
  13. return a * a;
  14. }
  15.  
  16. bool Equal(double a, double b)
  17. {
  18. return abs(a - b) < 10e-7;
  19. }
  20.  
  21. bool Bigger(double a, double b)
  22. {
  23. return !Equal(a, b) && a > b;
  24. }
  25.  
  26. bool EqualOrBigger(double a, double b)
  27. {
  28. return Equal(a, b) || Bigger(a, b);
  29. }
  30.  
  31. double RoundSquare(double l)
  32. {
  33. return PI * sqr(l);
  34. }
  35.  
  36. int main()
  37. {
  38. //freopen("Text.txt", "r", stdin);
  39.  
  40. double a, l;
  41.  
  42. scanf("%lf%lf", &a, &l);
  43.  
  44. if (EqualOrBigger(a, 2 * l))
  45. {
  46. printf("%lf", RoundSquare(l));
  47. return 0;
  48. }
  49.  
  50. double diagHalf = (sqrt2 * a) / 2;
  51.  
  52. if (EqualOrBigger(l, diagHalf))
  53. {
  54. printf("%lf", sqr(a));
  55. return 0;
  56. }
  57.  
  58. double k = a / 2;
  59. double b = sqrt(sqr(l) - sqr(k));
  60.  
  61. double cosd = k / l;
  62. double d = acos(cosd);
  63. double e = 2 * d;
  64.  
  65. double S1 = sqr(l) * e / 2;
  66.  
  67. double S3 = b * k;
  68.  
  69. double S2 = S1 - S3;
  70.  
  71. double answer = RoundSquare(l) - 4 * S2;
  72.  
  73. printf("%lf", answer);
  74.  
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement