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);
}
}
অনেক সহজ বাট একটু , প্যাচযুক্ত একটা সমস্যা . আর সেটা , হলো --- ঘড়ির কাটার সমস্যা , ঘন্টার কাটা ও মিনিটের কাটা'র মধ্যে উতপন্ন কোণ নির্ণয় করা ।। সেই জন্য , আপাতত এই ঘড়ি'কেই আমরা
একটু চিন্তা করবো ।
আচ্ছা , ঘন্টার কাটা পুরো এক ঘন্টায় একবার রাউন্ড দেয় তাই না ?? এর মানে , ঘন্টার কাটা একটা বৃত্ত বানাতে জাস্ট ১২ ঘন্টা / (৬০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