LightOJ – 1331 – Agent J

Problem link

Agent J

আলোচনাঃ
আমাকে তিনটা বৃত্তের ব্যাসার্ধ R1,R2,R3 দেওয়া আছে। আমাকে নীল অংশের ক্ষেত্রফল বের করা লাগবে।
তার মানে চিত্র অনুসারে, আমরা ABC ত্রিভুজ থেকে বৃত্তকলা (CDE , BDF, AEF) বাদ দিলেই নীল অংশের ক্ষেত্রফল পেয়ে যাবো।
উত্তরঃ
চিত্র অনুসারে,
CD = CE = R1 , BD = BF = R2 and, AE = AF = R3
তাহলে আমরা লিখতে পারি,
CB = R1 + R2 = a
CA = R1 + R3 = b
BA = R2 + R3 = c

তাহলে আমরা জানি, ত্রিভুজের তিনটা বাহু দেয়া থাকলে কোণ নির্ণয়ের সূত্র হচ্ছে,
cosθ1 = (a^2 + b^2 – c^2)/(2ab) [ কোণ এর বিপরীত দিকের বাহু টা minus হবে। এখানে θ1 এর বিপরীত বাহু = c ]
S0, cosθ2 = (a^2 + c^2 – b^2)/(2ac)
S0, cosθ3 = (b^2 + c^2 – a^2)/(2bc)

আর আমরা জানি, একটা বৃত্তকলার ক্ষেত্রফল = 0.5*r^2*θ
এই সূত্র দিয়ে 3টা বৃত্তকলার ক্ষেত্রফল বের করে, ত্রিভুজের ক্ষেত্রফল থেকে তা বিয়োগ করলেই নীল অংশের ক্ষেত্রফল পাবো।

C++ Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
 
int main(){
   int t;
 
   scanf("%d",&t);
   for(int i=1;i<=t;i++){
        double r1,r2,r3;
        scanf("%lf%lf%lf",&r1,&r2,&r3);
        double a,b,c;
        a=r1+r2;
        b=r1+r3;
        c=r2+r3;
        double s=(a+b+c)/2.0;
        double triArea = sqrt(s*(s-a)*(s-b)*(s-c)); // Area of Triangle,ABC
 
        double angle1=acos((a*a+b*b-c*c)/(2*a*b));
        double angle2=acos((a*a+c*c-b*b)/(2*a*c));
        double angle3=acos((b*b+c*c-a*a)/(2*b*c));
 
        double sector1=0.5*r1*r1*angle1;
        double sector2=0.5*r2*r2*angle2;
        double sector3=0.5*r3*r3*angle3;
 
        double ans=triArea-(sector1+sector2+sector3);
        printf("Case %d: %.10f\n",i,ans);
   }
 }

Related Problem – Juice in the Glass

This Post Has One Comment

Leave a Reply