Problem তা বেশ মজার । Geometry এর Beginner Level এ problem টি দেয়া থাকলেও আমার কাছে মনে হয়েছে তুলনামুলক ভাবে কঠিন । যাই হক চল Problem টির solution শুরু করা যাক ।
Problem Statement:
a,b,c দেয়া থাকবে input হিসেবে । Output দেখাতে হবে d এর । এইখানে a ,b ,c ,d হল যথাক্রমে Tri-angle BFX , BXC , CXE , AFXE এর ক্ষেত্রফল ।
Have Fun |
Problem Solution
১। d area টিকে ২টি ভাগে ভাগ করে ফেল । . একটি হল FEX (Let call its area d1),এবং আরেকটি হল FEA ( Let call its area d2).
২। লক্ষ করে দেখঃ
* The triangle BFX has area a. Let's say that its base is BX, and its height is h1
* Then the base of FXE can be XE, and its height is also h1
* Similarly, the triangle BXC can be said to have base BX and height h2.
* And the triangle XEC has base XE and height h2.Knowing all these relations, and with a little algebra, you can deduce that d1 = a*c/b.
* For the value of d2, there are many ways to get it. Use a similar reasoning, and triangles like AFE, AFC, BFE and BFC to deduce d2. If you try then you will find that (a+d1)/d2 = (a+b)/(c+d1+d2)
৩। কাজেই result হবে d = d1+d2 .
Critical Cases:
যদি a,b,c এর মান ০ দেয়া হয় তবে কি তোমার program তা ঠিক ঠাক মত output দিতে পারছে ?
Program Code :
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int i,test;
bool flag;
double a,b,c,d1,d2;
cin>>test;
for(i=1;i<=test;i++)
{
flag=true;
cin>>a>>b>>c;
if(b!=0) d1 = (a*c)/b ;
else flag=false;
d2 = (a+d1) * (c+d1) ;
if(b != d1 )
d2 = d2/(b-d1);
else
flag=false;
d1 = d1 + d2 ;
if(!flag)
printf("Case %d: -1\n",i);
else if(d1<0)
printf("Case %d: -1\n",i);
else
printf("Case %d: %.10lf\n",i,d1);
}
return 0;
}
vala kore explain korlen na kela :)
উত্তরমুছুন