Saturday, August 26, 2017

579 - Clock Hands Uva Problem Solution With Logic

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=520


অনেক সহজ বাট একটু  , প্যাচযুক্ত একটা সমস্যা . আর সেটা , হলো --- ঘড়ির কাটার সমস্যা , ঘন্টার কাটা ও মিনিটের কাটা'র মধ্যে উতপন্ন কোণ নির্ণয় করা  ।।  সেই জন্য , আপাতত এই ঘড়ি'কেই আমরা
একটু চিন্তা করবো । 

আচ্ছা , ঘন্টার কাটা পুরো এক ঘন্টায় একবার রাউন্ড দেয় তাই না ?? এর মানে , ঘন্টার কাটা একটা বৃত্ত বানাতে জাস্ট    ১২ ঘন্টা / (৬০X১২ = ৭২০) মিনিট সময় নেয়   , এর মানে ৩৬০ ডিগ্রী কোণ উতপন্ন করে  । ।

তাহলে  ,    ঘন্টার কাটা  ৭২০  মিনিটে   উতপন্ন  করে  মোট    ৩৬০ ডিগ্রী
                  ঘন্টার  কাটা    ১   মিনিটে   উতপন্ন করে   ৩৬০/৭২০ == ০.৫ ডিগ্রী

তাহলে , ধরো বলা হলো -- ঘন্টার কাটা ৭ ঘন্টা ১৫ মিনিটে কত কোণ উতপন্ন করবে ???? ( আপাতত , মিনিটের কাটার হিসাব বাদ )  তাহলে , তুমি কি করবে /?? হুম , তাহলে উপরের নিয়মের মতো করে
মিনিটের হিসাব করে   ( ৭ X ৬০ + ১৫ = ৪৩৫   )    তার সাথে ০.৫ দিয়ে গুণ করলেই তুমি পাবে , ঘন্টার কাটা কত ডিগ্রী উতপন্ন করলো ?? মোট ( ৪৩৫*০.৫ = ২১৭.৫ ডিগ্রী )   তাহলে , এই ২১৭.৫ ডিগ্রী কথাটার  মানে আসলে কি দাড়ালো ??

 এর মানে হলো -- সেই ১২ টার কাটা থেকে , একদম ঘন্টার কাটা এখন যেখানে আছে -সেই অব্দি , মোট কত ডিগ্রী , কোণ উতপন্ন হয়েছে - সেই কথা ।।

হুম , এখন যদি সেই ১২ টার কাটা থেকে - মিনিটের কাটা অব্দি কোণ বের করে আগের টার থেকে বিয়োগ দেই , তাহলে কি পাবো ??? বলো তো ???

হুম ঠিকই ধরেছো , তাহলেই আমরা আসলে পাবো --- মিনিটের ও ঘন্টার কাটার মধ্যেকার কোণ ।। এটাই আমরা করবো । তাহলে চলো , মিনিটের কাটা ,কত কোণ উতপন্ন করে ? সেটা বের করে আসি ।।

মিনিটের কাটা , পুরো ৬০ মিনিটে ঘড়িতে এক রাউন্ড সমপন্ন করে ( ৩৬০ ডিগ্রী ) উতপন্ন করে । 

তাহলে ,  মিনিটের কাটা  ৬০  মিনিটে   উতপন্ন  করে  মোট    ৩৬০ ডিগ্রী

               মিনিটের কাটা  ১  মিনিটে   উতপন্ন  করে  মোট    ৩৬০/৬০=৬ ডিগ্রী

তাহলে , আমাদের এইখানে মিনিটের কাটা মোট উতপন্ন করেছে ( ১৫ *৬)=৯০ ডিগ্রী ।। অর্থাৎ , ১২ টার কাটা থেকে  মিনিটের কাটা অবদি মোট কোণ ৯০ ডিগ্রী । এখন এটা সেই আগের থেকে  বাদ দিলেই  আসল কোণ পেয়ে যাবো , তাহলে চলো - দেখি কতো হয় ???  (২১৭.৫ - ৯০) =১২৭.৫ ডিগ্রী , যা ১৮০ এর চেয়ে ছোট সুতরাং এটাই উত্তর .  ।

অনেক প্যাঁচাল হইলো - এবার কোড দেখি চলো ------

#include<stdio.h>
#include<math.h>

int main()
    {
         double min,hour,angl,hourangle,minuteangle;
          while(scanf("%lf:%lf",&hour,&min)==2)
          {
              if((hour==0)&&(min==0))
              break;
             hourangle=(hour*60+min)*0.5;
             minuteangle=min*6;
             angl=(hourangle-minuteangle);
              if(angl<0)
               angl=angl*(-1);

              if (angl>180)
              angl=360-angl;

              printf("%.3lf\n",angl);
          }
    }



No comments:

Post a Comment