আলোচনাঃ
আমাকে তিনটা বৃত্তের ব্যাসার্ধ 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
Pingback: Lightoj 1433 Minimum Arc Distance - English Solution - tusher's blog