immuntasir

Untitled

May 29th, 2015
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cmath>
  3. #include <cstdlib>
  4. int main() {
  5. freopen("in.txt", "r", stdin);
  6. int T,cs=1;
  7. scanf("%d", &T);
  8. for (cs = 1; cs<=T; cs++) {
  9. double rat, ab, bc, ac,de,ae,ad, ratio, s, area,s2,area2,area3;
  10. scanf("%lf %lf %lf %lf", &ab, &ac, &bc, &ratio);
  11.  
  12. s = (ab+bc+ac)/2;
  13. area = sqrt(s*(s-ab)*(s-bc)*(s-ac));
  14. double low = 10e-7;
  15. double high = ab;
  16. int xyz = 100;
  17. while (xyz--) {
  18. ad = low + (high-low)/2;
  19. //printf("%lf %lf %lf\n", low, high,ad);
  20. de = (ad/ab) * bc;
  21. ae = (ad/ab) * ac;
  22.  
  23. s2 = (ad * (((bc/ab) + (ac/ab) + 1) / 2));
  24.  
  25. area2 = sqrt(s2*(s2-ad)*(s2-de)*(s2-ae));
  26. area3 = area -area2;
  27.  
  28. if ((area3*ratio - area2) <= 10e-6) break;
  29. else if (area3*ratio < area2) {
  30. high = ad-10e-5;
  31. }
  32. else {
  33. low = ad + 10e-5;
  34. }
  35. }
  36. printf("%lf\n", ad);
  37. }
  38. return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment